私もようやくだいぶ前に収束したブームに追い付くべく,PKU を始めてみました.
Welcome To PKU JudgeOnline
言語は C/C++/Java といろいろ選べるのですが, ここはもちろん Pascal !
とりあえず,標準入力から 2 つの数を受け取って結果を表示という,非常にどうでもいい問題を解いてみる.
a + b problem
まず,コンパイラのインストール.PKU に合わせて,ここでは FreePascal をチョイス.
# apt-get install fp-compiler fp-utils fp-docs fp-ide
なにげに,Pascal プログラムファイルにつける拡張子がよくわからない… とりあえず,テキトーに .pas とか付ける.どうせオンラインジャッジだから,ファイル名はどうでもいい.
program p1000(Input, Output);
var a,b:Integer; begin Readln(a, b); Writeln(a + b); end.
というか,サンプルプログラムコピペですな.end が,実に Ruby らしい趣があって素晴らしいですね.これで慣れておけば,僕も立派な Rubyist に成れるかもしれません.
そもそも,何で Pascal を使ってみようかと思ったかというと.YT さんがコメントで
ゲーム&&オブジェクト指向プログラミング / 塚越 一雄 (著) [asin:4874085644]
言語への偏愛が感じられる本を語る上でこれは外せません。C++とTurboPascalの両方でゲーム(コンソールで動く思考ルーチンが全てみたいなやつ)の製作を通じてオブジェクト指向を説明する本なのですが、このうち「C++」「ゲーム」「オブジェクト指向」は全てTurboPascal本を書く為のカモフラージュしかし手抜きは無し(全ソースがC++とTurboPascal両方に書き下されてます)という出版界の事情と著者の不屈の意思に満ちた良本です。
ほう,そんな素晴らしい人が.
なんとなく,Pascal とか Delphi とか PHP とか HSP とかの素晴らしさってのは,信者がいないってことだと思っていたのですが.日本語 Programming 言語 「ひまわり」 とかの作者の素晴らしさは,そこにあるというか.やりたいことがあって,ライブラリと開発環境があったから,とりあえず書いてみました.的なやわらかいノリが素敵だと思います.
J ■ Delphi
あと、こういうのって調べようにもソース公開されてないんだよな…と、思ったら、http://hima.chu.jp/download/download.htm普通にダウンロードのとこに置いてある。惚れそうだ。
中身は…なんと、Delphiじゃないですか。
Delphiユーザってなんか信者とかの危険な匂いが全然無いような。「Delphiで書いてあります。Delphiで書いたからこそ〜ほげほげ〜」みたいな話を絶対しない。
僕は〜言語万歳 (マンセィ) な人ってのは,かなり苦手なので (特に Java とかアレとかソレとか).なぜかジェーンスッポスッポ先生は大好きなんですが.それは C++ にはある種のコンセンサスがあるような気がするから.みんな必要悪だとわかって使っているというか.
対照的に,某言語群とかにありがちな,一見中立な立場で広い視野で公正に批評しているかのように見せかけつつ (というか,本人達はマジなのかもしれない),最後には必ず某言語を推すような某人達は危険だと思うのですよね.あの類の言語愛ってのは,結局のところナルキシズムなので.
歴史上最も酷い悲劇の多くは善意から生まれたと,C++ の生みの親であるじぇーんすっぽすっぽ先生自らがおっしゃっておられるというのは,いろいろ素晴らしいと思います.きっと先生のそのような人徳が,僕等の心を引き付けてやまないのだと.
Bjarne Stroustrup Interview about C++
う〜ん,しかし,なぜ Pascal だとあまり嫌悪感が無いのか.
やはり Pascal は,教育用言語という割りきりから生まれたため作者のニクラウス・ビルト先生の個人的思想が薄い言語だからなのかもしれない.単によく知らない言語だから,という説も有力ですが.
どうせなら,FORTRAN を覚える方が,まだ実用性はあるかもしれないけど.FORTRAN は科学技術計算 HPC の分野では最強言語の名を欲しいがままにしてますから.
しっかし,Pascal は情報が少なすぎる… 文字列の入力さえよくわからん.fgets みたいに,入力文字数の制限とかはしなくても良いのかね ? いろいろ謎. 古本屋で Pascal 入門でも捜して来るか… 100 円とかで売ってそうだ.
というか,想像以上に Pascal チャレンジャーが多いことが気が付いて,飽きてしまった.終了.
(今時のこらえしょうの無い若者管理人)
本当に大切なものは
夢とか 理想とか そんな大げさなものじゃなくて
もっとささやかで つつましい
貧弱でみすぼらしいけど
もとめれば いつでもとなりにいてくれた
そう,君だったんだなぁ
scanf()
(秋の夜長のポエミー管理人)
どうでもいいけど,なんで Pascal があるのに,Ada が無いんだ ?
いなくなってしまった言語のこと… ときどきでいいので 思い出してください
というか,リファレンスマニュアルを眺めていて気が付いたのだけども,ライブラリの数がなにげに凄いような.実は FreePascal はとても素晴らしいのかもしれない.なぜか fp-ide がちゃんとうごかないんだけど,これが動けば Delphi ばりに素敵な環境が Linux で手に入るのかもしれない.Delphi とか使ったことないけど.
う〜ん,ほぼ丸一日 Pascal の情報を探していたのだけど,matrix 演算をはじめとして,あれだけいろいろライブラリがありながら,なぜか FreePascal の標準ライブラリ (Standard Unit) に,多倍長演算は無いらしい.
# 非標準というか,FreePascal.org に投稿されたライブラリの中には mpcalc とかがあるみたい.
いや,PKU 1001 のためなんだけど.
というか,一問目と二問目の難易度差があり過ぎのような… 難易度というか,面倒臭さか.Java だったら Bignum の乗算するだけなんだけど.
どういうことなのだろう.これはやはり,問題に合わせていろいろな言語を使ってみよう ☆ という啓示なのだろうか.
やはり,ここらへんの言語を触っていると,Java とか Ruby の (ライブラリの) 素晴らしさを実感します.
それにしては,やけに Pascal のチャレンジャが多いような… 謎.当初は,Pascal にもライブラリがあるからだと思ったのですが,文字数からすると,正攻法で文字列で入力取って自前で乗算手続きして文字列で出力みたいな感じだろうと思う.Pascal の writeln も,かなり癖があるから… 浮動小数点は指数形式で表示される (表示する桁数を指定すれば,普通の 10 進形式も可能) とか.どのみち無限精度の表示はできないから,同じなんだけど.
強い型付けの言語だから,printf/scanf 相当の関数も無いみたい.read は,パスカル文字列型の,最初に指定した数 (str:string[10] とか) ぶんだけきっちり読みこまれるという… なんだかいろいろ慣れないですわ.
もちろん,C より良いところもいっぱいあるんだけどね.配列宣言とかの文法の一貫性とか部分範囲型とかは非常に素晴らしいと思う.なんてったって,誇りと伝統の LL(1) 文法だし.PDP11 マクロアセンブラの末裔とは,血統が違う,血統が.Pascal は生まれ付いての貴族なのだ.
あと,FreePascal は,演算子のオーバーロードとか普通にできて,なにげに凄い.クラス定義とかもできるしインタフェースも使える,気分は Pascal++ というか.というか,名前だけで,これはもう Pascal でも何でも無いような.GNU C みたいに.Borland Pascal というか.
ああ,PKU で Ada が使えたら… たぶん bignum とか普通にありそうだ.
(Java を使ったら負けだと思っている 23 歳)
というか,Java だけ全ライブラリと処理系がセットになってるっていう仕様がズルいよなぁ.C++ も STL が使えるか.
裸一貫でがんばる C はエライ ! (Free)Pascal は無駄にデカイなぁ… やはりお坊ちゃんだよ.
あー,あと,Pascal は,列挙型 (というか,任意の順序型) を配列の添え字にできます !!!
Pascal 入門 : データ型
OCaml に勝った ! (んなこたーない)
というか,何気に OOPascal と D は良い勝負のネイティブ言語なんじゃね ?
The D Programming Language : 他言語との比較2
Delphi だけど.
ひじょうにどうでもいいな.
|