2008年06月23日 05:00 [Edit]

この記事をクリップ! newsing it! Buzzurlにブックマーク b.hatena.ne.jp/entry 言語にわくわくが必要な理由

これは、同感、というより、

おごちゃんの雑文 ? Blog Archive ? プログラム言語に「わくわく」なんていらんでしょ
逆にRubyは「わくわく」しない言語だった。だからこそRubyな人達が「わくわく」と言うのに違和感を感じるんだけど。じゃあなぜ「わくわく」しないかと言えば、

出来て当たり前のことが当たり前に出来て、
たいていのことがサクっと当たり前に出来る

からだ。

Rubyのスローガンが、Principle of least surprise(POLS; 驚愕最小原則)である以上当然ではある。

そして、私がrubyが好きでも惚れるに至らない理由でもある。


私は、言語に二つの相反するものを期待している。一つは、「たいていのことがサクっと当たり前に出来る」こと。Larry Wall が言うところの「殺速性」(whipuptitude)だ。これがないと書いてて疲れてしまう。大リーグ養成ギプスを常に着たまま生活したい人などいるのだろうか。星飛雄馬本人だっていやがってたのに。

しかし、それだけじゃ私には物足りない。「言われなきゃ思いもつかなかった言い回しをその言語の範囲内で言う」、複殺性(manuplexity)も必要なのだ。皮肉ではあるが、これがないと複殺なものは複殺なままなのだ。

何が殺速で何が複殺かというのは、時代によって代わる。かつてOOPというのは複殺なものだったが、今ではかなり殺速になった。RubyはOOPを殺速するのにはピカ一だ。

しかし、時代とともに殺速になったものというのは、OOPだけではない。高階関数だってそうだ。Rubyはこの点においてピカ一とは言い難い。たしかにブロックのおかげで、最もよく使うシーンは非常に殺速なのだけど、その一方でProcオブジェクトはcallしないと使えない。1.9まではスコープ問題もあった。

OOPと高階関数は時代の流れを感じさせる言語パラダイムの双璧とも言えるものだけど、それでもなお氷山の一角に過ぎない。言語は、日常生活をさくさく片付ける機能だけではなく、「非日常」をその言語で「わくわく」と「日常化」する機能も求められている。

で、今までの電脳言語というのは、後者に関してはむしろ新言語を開発することで解決してきた。その方が、元言語で「やりくり」するより気持ちよかったり楽だったりしたからだ。Ruby自体この好例でもある。Perlでの「わくわく」を「さくさく化」したのがRubyの功績の一つだ。

その一方、同一言語内で「わくわく」を「さくさく化」しようという動きもまたあり、しかしこれに応えようという言語は以外と少ない。LispとC++(Cでないことに注目!)はこの双璧といえようか。しかしこの二つは、手練にとってさくさくとなったところで「さくさく化」が完了したと見なされてしまう。これではぱんぴーはおいてけぼりだ。

その意味で、初心者にとってさくさくでありながら、上級者にとってわくわくであることをきちんと意識しているのは Perl ぐらいしかないということになる。私が Perl に惚れている理由が、これだ。

これは電脳言語では奇異ではあるが、しかし自然言語ではそれこそが自然だ。始末書も懸想文も両方書けて、やっと自然言語としてはナンボなのだ。

ラリー・ウォール@Perlは、とっっても愛妻家!/Tech総研
私の中には、Perl6はずっと完成しなくてもいいという気持ちもあるのですが。

実は Perl 6 だけではなく、Perl 5 もまた「未完成言語」だ。それでいて、日常業務をきっちりこなすことが出来る。英語や中国語や日本語のように。自然言語は、これまで数えきれないほど未知の概念にぶつかりつつ、それを消化して自家薬籠中のものとしてきた。特に日本語は素晴らしい。"I"とか「我」とかいった、英語や中国語じゃ「差し替え不能」の「プリミティヴ」さえ差し替え可能だし、新概念が未消化のままでも、カタカナや時にはアルファベットをそのまま混ぜて使える。Larryが惚れるのもわかる。

おごちゃんの雑文 ? Blog Archive ? プログラム言語に「わくわく」なんていらんでしょ
繰り返しになるけど、「わくわく」するってのは、未知への期待からだ。つまり、身についていないものがあるから、「わくわく」するのだ。だから、むしろ言語それ自体は早くつまらなく退屈になってしまった方がいい。言語の未知の部分が十分少なくなってこそ、その言語が身についたと言えるからだ。

しかし、いつかは「その言語でまだ誰もそんなことを言ったことがない」ことを言う羽目になる。それが出来るかどうかというのは私にとって切実な問題だ。

「さくさく」言語と「わくわく」言語を時と場合によって使い分けるというのも悪くない。しかし一つの言語で出来るのであれば、それも悪くない。ラーメン屋でもビストロでも、同じ言葉で注文できるのってすごいことじゃない?

「クレム・ブリュレ一丁!」が通じることを、私は言語に期待する。だから「さくさく」だけでは食い足りないのだ。フランス語圏でもないのに"Crème brûlée, s’il vous plaît."と言わないと注文できないのは、間違った傲慢(false hubris)ではないのか。

Dan the Nullingual


この記事へのトラックバックURL

この記事へのソーシャルブックマーク
はてなブックマーク
Livedoorクリップ
0 Buzzurl
この記事へのトラックバック
よくわからずに思ったこと、感じていたことを連ねました。 勘違いも甚だしいーな記述...
一方、僕はRubyを入門言語として選んだ【十返舎.com】at 2008年06月23日 10:31
この記事へのコメント
Rubyコミュニティが驚き最小の原則で説明するのを諦めたのはもう何年も前の話だと思います
作者本人も一般に言うPOLSではないと言ってたはず
せめて認識をアップデートしてくださいな
Posted by ななs at 2008年06月23日 12:08
前提としている部分が結構限定的みたいだね
http://slashdot.jp/developers/03/03/14/0258247.shtml?topic=86
Posted by 774 at 2008年06月23日 19:19