Lispのルーツ

2001年5月

(私は、McCarthyが正確に何を発見したのかを理解するために、この記事を書きました。Lispでプログラミングするためにこれを知る必要はありませんが、Lispの本質、つまりその起源と意味の中核を理解したい人には役立つはずです。そのような核を持っているという事実は、Lispの際立った特徴の1つであり、他の言語とは異なり、Lispに方言がある理由です。)

1960年、John McCarthyは、プログラミングにおいてユークリッドが幾何学に対して行ったことと同様のことを行った、注目すべき論文を発表しました。彼は、いくつかの単純な演算子と関数の表記法があれば、プログラミング言語全体を構築できることを示しました。彼はこの言語をLispと名付けました。これは「List Processing(リスト処理)」の略で、彼の重要なアイデアの1つは、コードとデータの両方に_リスト_と呼ばれる単純なデータ構造を使用することでした。

McCarthyが発見したことを理解する価値があるのは、コンピューターの歴史におけるランドマークとしてだけでなく、プログラミングが現代において向かおうとしているモデルとしてもです。これまで、プログラミングには本当にクリーンで一貫したモデルが2つあったように思えます。CモデルとLispモデルです。これら2つは高地であり、その間に湿地帯が広がっているように見えます。コンピューターの性能が向上するにつれて、開発されている新しい言語は着実にLispモデルに向かっています。過去20年間の新しいプログラミング言語の一般的なレシピは、Cモデルのコンピューティングを採用し、ランタイム型付けやガベージコレクションなど、Lispモデルから取られた部分を少しずつ追加することでした。

この記事では、McCarthyが発見したことを可能な限り簡単な言葉で説明しようと思います。重要なのは、40年前に誰かが考え出した興味深い理論的結果について学ぶことだけでなく、言語がどこに向かっているかを示すことです。Lispの珍しい点、実際にはLispを定義する品質は、それ自体で記述できることです。McCarthyがこれで何を意味したかを理解するために、彼の数学的表記法を実行中のCommon Lispコードに翻訳して、彼の足跡をたどります。