「Perlの自然言語原理」 ―補遺

2002-11-25, <>

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"が生まれるのではないか、私はそんな予感と希望を抱いています。

訳注

*1
言語への新語導入や使用について規制を加えているフランス語のような 言語のことを指していると思われます.
*2
これはメタフォリカルな言い方ですが、ここで Larry が言っているのは, 実際の問題はある(整数)次元間を直線距離で行くように解かれるのではなく, その間の複雑な地形=部分問題を1つずつ辿りながら解決されるのだ, ということでしょう. 山や谷などの実際の地形がフラクタルによって近似でき、それは (2.732次元のような)非整数の次元をもつことはよく知られています.
*3
ここでいうPerlの「句読点」とは、 $, @, % などの記号のほかに, たとえばすぐ下の例に出てくるように,
move $rock from => $qr_pos, to => "kb3"; の「,」の使い方のようなものかと思われます.
例えばMLではリストを [1; 2; 3; 4] のように表記しますが, Perl では決してそうは書かないでしょう. それはリスト(=物の連続)がふつう 「a,b,c,d」のように数えられるからで、それを ; を使って書いたり、Lisp のように (1 2 3 4) のように書いたのでは Perl の目指す自然言語との連続性、解釈の自然さが失われるからです.
表現の言語としての直観的な自然さが Perl の目指すもので, {"foo", 1, "bar", 2} のハッシュを { "foo" => 1, "bar" => 2 } のようにも書けるという Syntax sugar もその1つの表れではないかと思われます.
*4
Pascal では、Cのrec.i = 1; rec.j = 2; のような構造体メンバ へのアクセスに対し、with rec do i := 1; j := 2 end; のように構造体(レコード)を"開いて"書く書き方ができます.
Perl6 でも,
      for @obj -> $obj {
          .method();   # $obj.method()
      }
      
のように書くことができるようになるとのことです (Thanks for satoru-t).
*5
先の主題化文の流れでいうと、この $_ は言語学でいう痕跡 (トレース)のようなものだと考えることもできます.

daiti-m@is.aist-nara.ac.jp
Last modified: Tue Nov 26 14:24:38 JST 2002