LISP のルーツ
OriginalMay 2001
(この記事は、私が McCarthy が実際に発見したものを理解するために書きました。 Lisp でプログラミングするためにこの知識は必要ありませんが、Lisp の本質を理解したい人には役立つはずです。 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 を定義する品質は、Lisp 自身で記述できることです。 McCarthy がこの言葉で何を意味したのかを理解するために、彼の数学的表記を動作する Common Lisp コードに変換して、彼の足跡をたどります。