Nov 26, 2006

全ての言語はLispに向かう?

これは物事をよく分かってない文系人間の戯言ですよ。

最も古くからあるプログラミング言語の一つとして知られていて、熱狂的なファンが多くて、数学とかそっち方面で「頭が良い」人でないと使いこなせないという印象がある、Lispなんだけど。3つめのエントリに書かれていた「Lispは構文木を直接読み書きしているのと同じ」という表現でなんとなくピンと来たかも知れない。

構文木とは、プログラム(ロジック、アルゴリズム)がコンピュータに理解可能な形に翻訳される中で生まれる、最も抽象度の高い状態だと思う。その状態においてそのロジックに何ができるのか、どんな事が可能になるのか、あらゆる可能性が内包されている物が、Lispなのではないか。「こういう機能を持たせよう」と意識して言語仕様が作られたのではなく、抽象度を極限まで高めようとした結果、必然的にそれらの仕様がもたらされて「しまった」のではないか。最も低級な言語であるマシン語の世界において、バイナリ書き換えなどの「テクニック」が誰によって「実装」されるまでもなくごく当然に起こりうる事象の一つであるのと、同じように。

でも抽象度が高すぎて、数学的な天才以外にはなかなか理解できない。だからもっと人間寄りで具体的な仕様の、高級言語が必要とされた。

でもその過程で、多くの物が失われた。具体化するということは、抽象的でなくするということは、抽象的な状態が持つ無限の「可能性」を少しずつ制限して、できることの幅を狭めていくということ。何もルールのない無法地帯に、歩くための道筋を作って、ひいては「道ではない場所を歩けなくする」ということ。

そんな言語に「新しい機能」が加わるというのは、今まで道ではなかった場所に新しい道を造ること。それに対してLispは、どこにも道がない、好きなところをいつでも誰でも自由に歩ける大平原のようなもの。道路である場所の面積が広くなるということは、自然と、その道路がある土地の好きなところをいつでも誰でも自由に歩ける状態に近づいていくということ。言語が機能拡張されていくことを「全ての言語がLispに向かっている」と表現するのは、「大平原=Lisp」と考えてこの事象を捉えた場合には、実にしっくりくる表現なのだろう。

でも、なんというか、それをして「全ての言語はLispに向かう」と表現するのは何とも傲慢な言い方というかLisp中心主義的すぎるという気もするんだ。

上で、「Lispは大平原」と書いた。でもそれは実は嘘だ。実際には、Lispはロジックとアルゴリズムという大平原そのものではなく、それを覆い尽くすくらいに巨大な一つの舗装道路に過ぎない。Lispという道路と、それが設置されている大平原とは、イコールではない。大草原を自由に歩き回りたくて道を拡張していくと、自然とその道の面積は広くなり、Lispに近づいていくと言える。でも、Lispになることを目指してそうしている訳じゃあない。草原を歩き回ることを目指してそうした結果、たまたまLispに似てきてしまっただけのことだ。

さらに言えば、Lispが大平原を覆う道路だったとしても、その道路の上を歩いている限りは空中を散歩することはできない。空中も含めて自由に行き来できるような手段、「空中を歩ける新しい道路」が設置されたとしたら、それは確かに「Lispを超えた」と言えるけれども、それは「Lispを超えること」を目的としてそういう道路が造られたのではなく、あくまで、より自由に移動できるようになるという大きな目標に向かう過程でそういうものが生まれただけに過ぎなくて、その観点から言えば、Lispという二次元平面の道路なんてものはただの通過点に過ぎない。

そういう風に考えるから僕は、「全ての言語はLispに向かう」という言い方には、Lispを中心に世界が動いているとでも言いたいのか、という感じの反発を覚えてしまうんだな。

ということを、何故Operaのこの機能をFirefoxがパクらないんだ、という書き方を見ていてちょっと思った。

エントリを編集します。

wikieditish message: Ready to edit this entry.











拡張機能