Lispの真実

Leon Bambrick / 青木靖 訳
2006年9月24日 日曜

ここにLispの真実が明らかにされ、いくつかの代替が提示される。

Lispを学ぶことはあなたの人生を変える。

あなたの脳はすごく大きくなり、そんなに大きくなるものだとは思わなかったほどになるだろう。

あなたは自分のアプリケーションをすべて、ほんの一握りのコードで書き換えるだろう。

社会はあなたを避けるようになる。あなたも社会を避けるようになる。

あなたは自分のまわりの物やまわりの人すべてに不満を感じるようになる。

Lispは非常にシンプルであり、ほんの数分で学ぶことができる。私はさっきバスを待っている間に学んだ。

Lispは非常にシンプルであり、どんな言語を使おうと数ページのコードで実装できる。しかしそんなことをすることはないだろう。ひとたびLispを学んだなら、あなたはLisp以外の言語で何かを書こうとは思わなくなる。だからLispをわざわざLisp以外の言語で実装する手間をかけたりはしないだろう。

LispはLispによって完全に実装することができる。ほんの一握りのコードによって。私はちょうどLispを完全に実装したところだ。バスに飛び乗って乗車賃を払っているその間に。

Lisperになると、他の人たちが可笑しいと思わないようなジョークに笑うようになる。あなたには普通の命令型言語では表現不能なことが理解できるからだ。

あなたは人が「やあ、こんにちは」みたいなことを言うのを馬鹿だと思うようになる。Lisperはそのような冗長な構成物を使う必要がないからだ。Lispはそのようなインタラクションのパターンを抽象化し去っており、まったく意味のないものにしている。Lisper仲間に挨拶する正しい作法では、ただ小さくあごで頷き、左目で1/10ほどのウインクをし、そして錫箔の帽子を指し示せばよい。彼らにはその意味が分かる。もしわからないとしたら、彼らは本物のLispプログラマではないので、どの道どうでもいい連中ということだ。

Lispははるか昔に作られた。Javaよりも昔、Cよりも昔、Fortranよりも昔、コンピュータよりも昔、人類よりも昔、地球ができるよりも昔、宇宙自体がLispプログラムなのであり、本物のLisperがわざわざ実装しようとしないのも当然のことだ。

Lispは非常にエレガントであり、Lispのほんの初歩を知っているだけで、ロイヤルバレエのプリンシパルをワンシーズン務められるくらいだ。あなたがステージに小さなチュチュをつけて現われ、つま先で空に丸い括弧をいくつか描くだけで、人々は驚きのため息をつくことだろう。彼らがLispを知らなければ話は別だが。しかし彼らがLispを知らないのなら馬鹿ということであり、どの道気にすることもないのだ。

Lisperだけが、楽しみの本当の意味を知っている。MLプログラマも知っているかもしれない。今日のすべての言語はFortranかLispに基づいている。まずい方がFortranで、すばらしい方がLispだ。

あなたがLispを使えるほど優れているなら、すぐにLispに苛立ちを感じるようになるだろう。Lispは許容可能なLispではないのだ。私の乗ったバスが2ブロック進む間に、私は簡単なLispマクロをいくつか書いたが、それは非常に強力で、Lispをまったく陳腐化させて、新しい言語で置き換えることになった。幸い、その新しい言語もまたLispと呼ばれる。そして私は自分の作った新しいLispが知覚可能なあらゆる面においてLispよりはるかに優れて おり、同時にあらゆる意味においてLispとまったく等価であることを数学的に証明することができた。私はこの事実にすごく興奮した。しかし同時にすごく退屈だとも思った。

redditがLispの強力さの証明になるだろう。Paul GrahamがオリジナルのredditをLispでコーヒーを待っている間にナプキンの裏に書いたのだ。Lispはあまりに強力であったため、redditはPythonで書き直す必要があった。普通のコンピュータでも理解できるようにしてやるためだ。Lispで書かれていたため、全部書き直すのもさほど労力はかからず、書き換えは2プロセッササイクルの間に完了した。Paul Graham自身すべてLispで書かれている。書いたのは以前のバージョンの彼であり、その彼もまた、さらに前の彼によってLispで書かれていた。Lisp、Paul Graham、Lisp、Paul Graham、というのがずっと続いていくのだ。

我々はムーアの法則の限界に達したので、将来のコンピュータはマルチコアへと進んでいき、我々のプログラムはすべてHaskellとLispの組み合わせで書くことが必要となる。それは非常に強力なものであり、将来のコンピュータは、我々のどんなアイデアであれ、さらに将来のコンピュータから処理能力を借りてくるタイムトラベルアルゴリズムにより実装されるようになる。これは難解なことに聞こえるかもしれないが、Lispであれば全然難しくはないし、Haskellでは組み込みの機能になっており、LispかHaskellを知る者にとってはまったく簡単なことなのだ。

そうして将来のコンピュータはリスピュータ(lisputer)と呼ばれるようになり、そのスピードはlispunitで測られるようになる。これはLispの不適切さについて同時に提出される議論が無数のLisp学者たちにより実質的な判断なしに論破される数によって計測される。今日のコンピュータはただの1 lispunit以下で動作している。 一方リスピュータはlisp lispunitで動作するだろう。ここでlispは宇宙最大の定数で、通常の命令的記数法では表現できない。それが無限の閉じ括弧で終わることを言えば十分であろう。


ところで、私は今日バスの中でLispについてのあるアーティクルを読んだ。最高のアーティクルだ。Lispについてのアーティクルはみんなすごくて——私の脳みそは耳から吹き出してしまう。 その"Lisp is sin"というアーティクルでSriram Krishnanは仕事ではC#を、遊びではLispを使っていると書いている。それからC#がLispへと向かっていることについても触れていた。

以下に挙げるのは、そのアーティクルにコメントしている人たちがLisp中毒の代替物として提案していたものだ。

  1. newLisp
  2. ML
  3. Perl6
  4. nemerle
  5. smalltalk
  6. biobike
  7. chez scheme
  8. Common Larceny
  9. XSLT
  10. OCaml
  11. LSharp
  12. Lua
  13. C Omega
  14. F#
  15. C# with Linq

それから、ある人はPythonのライブラリをLispにポートすることを提案していた。

興味深いのは、Rubyが出てきていないことだ。(アーティクル「なぜRubyは許容可能なLispなのか」と、それに対するSteve Yeggeのレスポンス、「Lispは許容可能なLispではない」を参照。)

(p.s. 「Paul Grahamはredditを書いてない」と最初にコメントした人にペロペロキャンデーをあげる。)

 

home  rss  

オリジナル: The Truth About Lisp

© Leon Bambrick 2006