LISPのルーツ
Original2001年5月
(私はこの文章を書いて、マッカーシーが何を発見したのかを正確に理解する手助けをしました。Lispでプログラムをするためにこの知識は必要ありませんが、Lispの本質を理解したい人には役立つはずです — その起源と意味的な核心の両方の観点から。Lispにはそのような核心があるという事実は、Lispの特徴の一つであり、他の言語とは異なり、Lispには方言がある理由です。)
1960年、ジョン・マッカーシーは、プログラミングに関してユークリッドが幾何学に対して行ったことに似た素晴らしい論文を発表しました。彼は、少数の単純な演算子と関数の表記法を用いることで、全体のプログラミング言語を構築できることを示しました。彼はこの言語を「リスト処理」を意味するLispと呼びました。なぜなら、彼の重要なアイデアの一つは、コードとデータの両方にリストという単純なデータ構造を使用することだったからです。
マッカーシーが発見したことを理解する価値があります。それはコンピュータの歴史における画期的な出来事であるだけでなく、私たちの時代におけるプログラミングがどのように進化しているかのモデルでもあります。私には、これまでに本当にクリーンで一貫したプログラミングモデルが二つあったように思えます。それはCモデルとLispモデルです。これら二つは高地のようなもので、その間には湿地帯があります。コンピュータがより強力になるにつれて、新しく開発される言語はLispモデルに着実に移行しています。過去20年間の新しいプログラミング言語の人気のあるレシピは、Cモデルのコンピューティングを取り入れ、それにLispモデルから取り入れた部分を少しずつ追加することでした。たとえば、ランタイム型付けやガーベジコレクションなどです。
この記事では、マッカーシーが発見したことをできるだけ簡単な言葉で説明しようと思います。ポイントは、40年前に誰かが考え出した興味深い理論的結果について学ぶことだけではなく、言語がどこに向かっているのかを示すことです。Lispの特異な点 — 実際、Lispの定義的な特質 — は、それ自体で書かれることができるということです。マッカーシーがこれを意味したことを理解するために、彼の足跡をたどり、彼の数学的表記法を実行可能なCommon Lispコードに翻訳していきます。