ねこ丸です。
References: <200204021355.g32DtF005077@...-net.or.jp>
HIDAKA Takahiro <cv8t-hdk@...-net.or.jp> さん writes
In 「[TSruby:32] Re: [TSabc:8]初心者用のスクリプト言語」
> 最初の例として、RubyとPerlのぼくにとっての大きな違いの例なんですけど、
> split関数があります。
>
> Perl では、split(/:/, string) とやると、文字列を : で区切った
> リストにしてくれます。
>
> Ruby では、同じことが string.split(/:/) になります。
>
> ぼくは、Perlを常用しないせいもあるんですけど、引数の順序が
> 覚えられないんですね(^^;; バカっぽい理由で申し訳ないんですけど、
> これが Perl を好きじゃなくなったひとつの理由だったりします。いや、
> たまたま引数を逆に書いてしまって動かなくて悩んだとき以来の
> さかうらみみたいなもんなのはわかってるんですけどね。。
いや、確かに Ruby の方が読みやすいですね。その規則さえ分かれば。
Perl はリファレンスが本当に手放せないです。
自分も Perl は使いますが、awk を使っていた頃のような気持ちよさがないん
ですよ。Perl を学ぶ前も(たまに)使う今も変わらず思うのは、Perl は美しく
ないなぁということです。それは分かりにくさでもあると思います。よほど書き
方に気をつけて use English して、それでもどうだか、って感じです。でも正
直、そんな書き方は Perl らしくなくて好きじゃないとも思うのですが(^^;(な
んてこった)
awk しか使えなかった頃には心底 Perl に憧れましたが、今思うとどうかなー
って感じ。Ruby も紅いくせに青く見えているだけなのかもしれませんが。
> ふたつめの例として多態の例をあげてみましょうか。
> Rubyに昔からあるけれど標準添付されてこなくて、次期バージョンから
> 入ることになっているライブラリに、StringIO というのがあります。
>
> これを使えば、ファイル操作と同じメソッド群で文字列操作ができます。
>
> ということは、def foo(f) として、File クラスのオブジェクトfを
> 受け取ることを期待して作った関数があったとしても、StringIO の
> オブジェクトを渡せば文字列として結果を返してもらうことができます。
> foo には全く手を入れる必要はありません。
ごめんなさい、この辺はオブジェクトを実際に作ってみないと感じられないか
も。関数と関数のインターフェイスをきっちり作りこむこととの違いがいまいち
見えてきません。
> もうひとつの例として、今作っている(けど全然進まない)スクリプトで、
> プレーンテキスト解析ライブラリみたいなものを考えています。
> こっちはクラスを作る話。
これも???
ただ、Perl のライブラリなんかを使うときは、なんかこう、スマートじゃな
い感じがすごくするので、例えばもっと‘うまく’書けるというだけでも十分メ
リットを感じることができます。
この辺は JavaScript をいじると少し感じますね。
自分の読みやすいようにしていくことができるのは面白いなと思います。ただ、
JavaScript は完全に見よう見まねなので、一度 ECMA 3rd Edition をちゃんと
やった方がいいのかなとも思うのですが…。DOM とかいじれたらなかなか面白い
んじゃないかと思いつつ、思っているだけです。(PDF をゲットしてあってもあ
の分量の英語を読みながら勉強するのはなかなか…。)
> あともうひとつのメリットとしては、全てがオブジェクトなので
> 例えばArrayやHashになんでも入れられて、しかもHashのキーにも
> できる(共通基底クラスObjectの利点)、というのがあるんだと思う
> のですが、いい例が思いつきません(^^;
いや、これはすごいです。連想配列以上のぶっとびです。連想配列だけでもけ
っこうな感動でしたが、それをオブジェクトで実現できるってのは…えーと、実
際に書いて動かしてみないとアレですが(^^;、かなり便利だと思います。C の構
造体に対する感動に近い感じ? いや、これはすごい。(と思う。)
--
ねこ丸