2002-11-25, Daichi Mochihashi <daiti-m@is.aist-nara.ac.jp>
Ruby の(日本における)隆盛が Perl を置き換えているかに見える現在、私がこの 文書を訳したのは、Perl には Ruby にはない思想があり、それは簡単に捨て去られる べきではない、と思ったからでした。
この文書で Larry が言っているのは、言語学的な詳細は惜くとして、一言で言うと
「自由の思想」とも呼ぶべきものなのではないかと思っています。Perl とはそもそも
"Pathologically Ecletic"(病的折衷主義の) 言語ですが、それは問題に対する
アプローチの面にも及んでおり、1つの問題をオブジェクト指向、関数型のような
固定された次元からだけではなく、様々な視点から眺め、「切る」ことができる
自由な言語を Perl は目指しているからです。
("There is more than one way to do it."
Ruby も同じスローガンを掲げていますが(Rubyの存在自体がスローガン
を意味付けているともいえる)、少なくとも私から見るとずいぶん純オブジェクト指向に
囚われているように見えます。)
Perl に問題があるとすれば、それはこの「切る」力が最近の複雑な問題に対処するには 鈍くなってきているということではないでしょうか。型安全でないシステム, デフォルトの大域変数、関数閉包やオブジェクトの作りにくさ、などは現代の言語 としてはメリットよりむしろバグを生みやすくなっています。バグを生まないよう 理論的に保護された Perl コードは可能ですが、 付加的な機能であるゆえに複雑になり、 容易にメンテナンスができなくなります。
しかし、そうした理論的な瑕疵は Perl が基にした(やや古い)時代の制限なのであって、 Perl 自身にそれほどの責任はないようにも思えます。 Perl の目指していたのは、この「Perlの自然言語原理」にも表れているように, 自然言語の文の自由さ、多様さ、総合性などではなかったでしょうか。
現実の問題に対処するには鈍くなった Perl ですが、それはしかし Perl の思想, 方向性が間違っていたことを意味しないように思われます。 いつか、オブジェクト指向、関数型言語、並列計算、アスペクト指向、...などの 理論的な刃が充分に鋭くなったとき、それを「自然」に結合する言語として "新しいPerl"が生まれるのではないか、私はそんな予感と希望を抱いています。
$
, @
, %
などの記号のほかに,
たとえばすぐ下の例に出てくるように,move $rock from => $qr_pos, to => "kb3";
の「,
」の使い方のようなものかと思われます.[1; 2; 3; 4]
のように表記しますが,
Perl では決してそうは書かないでしょう. それはリスト(=物の連続)がふつう
「a,b,c,d」のように数えられるからで、それを ;
を使って書いたり、Lisp のように (1 2 3 4)
のように書いたのでは
Perl の目指す自然言語との連続性、解釈の自然さが失われるからです.{"foo", 1, "bar", 2}
のハッシュを
{ "foo" => 1, "bar" => 2 }
のようにも書けるという
Syntax sugar もその1つの表れではないかと思われます.
rec.i = 1; rec.j = 2;
のような構造体メンバ
へのアクセスに対し、with rec do i := 1; j := 2 end;
のように構造体(レコード)を"開いて"書く書き方ができます.
for @obj -> $obj {
.method(); # $obj.method()
}
のように書くことができるようになるとのことです (Thanks for satoru-t).
$_
は言語学でいう痕跡
(トレース)のようなものだと考えることもできます.