2005年07月08日

53 竜2

d0500707.jpg
51のと同じ
向こうに見えるのは神の塔です。
つまりこのあたりはビスク・ロードなんですよ。
誰か分かりませんか。

さらばPerl。
最近Perlを初めて、一年間はPerlで頑張ろうと思っていましたが、早々にいやになったのでRubyにすることにしました。
いや、while(<>){if(/perl/){printf;}}とかの省略できまくるのが嫌とかではありません。アレも最初は気持ち悪かったですが、慣れれば楽だし幸せになれそうな感じです。
僕は初めてまともに勉強したプログラミング言語がJavaなので、OOPが楽に出来ないとムキー! となってしまうのです。C言語でそれなりに大きなプログラムを作りましたが、大まかな設計は教官がしていたし。初めて触った言語である、Prographだって結構早期のオブジェクト指向言語ですしね。
つまりPerlでオブジェクト指向するとうんざりするほど面倒くさいんですよ。そもそも文法レベルでちゃんとサポートされてないっぽい。いや、Perlは結構古そうだししょうがないのかもしれないけど、Objective Perlとかいう本も出てるし、大丈夫なのかなあと思ってました。
そしたら最初理解できなくて困りました。
クラスはモジュールです。
オブジェクトは無名ハッシュです(ハッシュじゃなくてもいいんだろうけど)。
??
blessするとリファレンスがモジュールと結びつけられます


なんてめんどくさい!
メソッド内で、いわゆるインスタンス変数に相当する物にアクセスするのに、
$this = shift;
$this->{hogehoge} = a;
とかやらないといけないのでイヤン。更にインスタンス変数が多重配列、というか配列のリファレンスの配列とかやっていると僕のチープな脳みそは考えるのをいやがってきます。
これで継承とかやろうとするとまたそれようのモジュールを読み込んでとかやっていると、なんかあほくさくなってきたのでRubyに乗り換えることにしました。
現実的な問題として、数ヶ月後自分のコードをみて分かる自信がなかったと言うのもあります。今書いているコードは多分卒論が終わるまで使い回すのでその辺り結構重要です。
他にもPythonという選択肢もあり、どちらにするか相当悩んだのですが、まあ日本人が作っている方が日本語処理も安心だよなとか思ってRubyにしました。Pythonの文法レベルで可読性を考慮するのもなかなか魅力的でしたが、何しろ日本じゃマイナーだしね。
あと日本語のドキュメントもRubyの方が充実しているという話も聞きますしね。これは関連本の発行部数はともかく、ネット上に限れば、正直嘘だろうと思います。
という経緯があり、今週の頭ぐらいから少しずつ前Perlで書いたプログラムをRubyに移植しています。
当初は本を買わず、ネット上のチュートリアルなどで勉強してやっていこうと思ったのですが、公式のチュートリアルはウンコだし、まとまったいいページもないしということで、結構苦労しました。とりあえず作った検索エンジンにクエリを送るプログラムはPerlでかいた物よりだいぶ綺麗になったのでまあ良かったかなと思います。
ただこれ以上、何も書籍買わずにやっていく自信もないので、結構値が張りましたが、ネット上でやたら評判のいい「プログラミングRuby」を買いました。
これはチュートリアルから始まり、陥りやすい細かい文法事項やら、パフォーマンスを向上させる方法、そして組み込みクラス、モジュールなどの詳しいリファレンスまでついている、かなり網羅的で良くできた本です。
チュートリアルを読みましたが結構丁寧で分かりやすく書かれています。全くのプログラム初心者に勧められるかといえばちょっと微妙ですが、僕のように多少は他の言語もやったことのある人間にとっては、Rubyがどういう言語かというキモをズバッと書いてくれているので非常に嬉しいです。
しかも読んでて楽しいんですよ。例もよくあるclass Carとかいうアレなのではなく、分かりやすく、納得出来るのを例に出しているし。
このレベルのチュートリアルがネット上にあれば、もうちょっとRuby使う人も増えるのではないかと思います。正直ネット上の情報ではPythonの方が充実しているんじゃないでしょうか。
モジュールとかにしても海外でかなり使われているPythonの方がRubyより遙かに充実しているっぽし。
どうも日本人が作るモジュールとかってドキュメントが適当なのが多いような気がします。
「サンプルをみりゃわかるよ」
そりゃ作った人はそうだろうけどさ。
なんとかならんですかねえ。
ただRuby自体はいいですね! かなりいいですね!
OOP関連もシンプルながら強力な感じだし。
イテレータとか、コードブロック関連とかも楽しそうです。
というわけで、ぼちぼち頑張っていこうと思います。
といいつつ三ヶ月後にはPythonに変わっているかもしませんが。