[ruby-list:88] Re: ruby vs. perl

From: matz@... (Yukihiro Matsumoto)
Date: 1996-01-24 09:09:41 UTC
List: ruby-list #88
まつもと ゆきひろ@トヨタケーラムです.

In message "[ruby-list:87] Re: ruby vs. perl"
    on 96/01/24, P nakawtse <nakawtse@syrinx.dq.isl.ntt.jp> writes:
| 中渡@NTTです.
|
|> まつもと ゆきひろ@トヨタケーラムです.
|> 
|> 便利だなと思うんですけど,時々怒りを覚えるんですよね.
|> # ど〜してなんだよ〜っつうか
|
|  私はあまりないのですが,どこで怒ってしまうのですか?

それはperlになじんでしまっているんでしょう.悪いことではない
ですが.私の場合,ちょっと思い付くだけでも

  * 変数のデフォルトがグローバル
  * `$_'の値がいつの間にか変わってしまう
  * ユーザ定義関数と(関数的)演算子とで文法が違う
  * コンテキストの違いで動作が変わる.「local($foo) = <>」と
    かよく間違える
  * データ型が無い(スカラ).あるいは根本的に違う(配列/連想配
    列)
  * 参照型は良く分からない
  * Cで拡張する気にならない(ほど難しい)
  * 言語仕様が大きい
  * オブジェクト指向機能が変

などがあります.まあ,どれも避けようと思えば避けられないこと
は無いし,慣れの問題でもあるんですけど.結局,以前のバックグ
ラウンド(lispやsmalltalkよりの人間です)がperlを完全に受け入
れるのに邪魔になっているんでしょう.

|  拡張機能でなくて,クラスでもスクリプトの範囲で
|  @assoc{/xyz./} 
| これくらい簡単に書けて,効率よくできるなら,
| perlを超えてますね.

これはCじゃなくてrubyでこういうのが書けるという意味ですか?
もちろん書けるでしょうけど,効率はどうでしょうねえ.

連想配列なわけですから,結局,繰り返し比較するというアルゴリ
ズム以外にはありえないわけで,本質的な高速化は難しいですねえ.
後はどれだけCのコードに任せちゃえるかで決まるような….

|> を連想させますが,効率は全然違います.perlは最初に配列を作っ
|> ちゃいますから.
|
|   これはいやなんです.#怒りそう

あら? 伝わらなかったかな.perlの

  grep(/xyz./, values %assoc)

配列を最初に作っちゃうけど,rubyの

  assoc.find_all{|k,v| v =~ /xyz./}

はそんな無駄なことはしません,whileで回す方のperlの例よりは
少し効率が良いでしょう,という意味だったんですけど.

                                まつもと ゆきひろ /:|)

In This Thread

Prev Next