Lisp
https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Lisp_logo.svg/1280px-Lisp_logo.svg.png
“Lots of Irritating Superfluous Parentheses”
Glisp で採用している基盤言語。とにかく括弧が多い。 以下、『メタマジック・ゲーム』p.443 より「Lispはどうして人口知能の分野で主流なのだろうか」。
Lispは単純で、エレガントである。
Lispの中心概念はリストとその処理。リストはごく柔軟なデータ構造である。
Lispのプログラムは、データと同じ構造。Lisp自身でプログラムを生成し、走らせることができる。
Lispの上で新しい言語のインタープリタを書くのが非常に容易。
Lispのような環境の中で泳ぐことが、多くの人々にとってきわめて自然。
Lispには「再帰の心」が染みわたっている。
なぜ1950年代の言語が時代遅れにならないかという簡単な説明は、 それが技術じゃなくて数学だったということだ。数学は色あせない。 Lispを比較する対象は1950年代のハードウェアでなく、 例えばクイックソートのアルゴリズムだ。それは1960年に発見され、 いまだに汎用ソートアルゴリズムとして最速だ。
Lispのユニークさ
式でプログラムが構成されること。Lispプログラムは式の木であり、 それぞれの式が値を返す。これはFortranとそれを引き継ぐ多くの言語とは 対照的だ。それらの言語は式と文を区別している。
言語の全てが常に在ること。読み込み時、コンパイル時、実行時が 明確に分離したステップになっていない。読み込み時にコンパイルして コードを走らせることもできるし、コンパイル時にコードを読んだり 走らせたりすることもできるし、実行時にコードを読んだりコンパイルしたり することができる。
Lispが奇妙に見えるのは、奇妙な構文を持っているからというより、 構文を持っていないからと言ったほうが良いだろう。 普通の言語なら舞台裏で構文解析して作られるような構文木を、 Lispプログラマは直接書いてプログラムを表現する。 その構文木はリストで表現され、それはLispのデータ構造だ。
言語を自分自身のデータ構造で表現するということは、非常に強力な機能となった。 アイディア8と9を合わせると、プログラムを書くプログラムを書けるということになる。 これは突飛なアイディアに聞こえるかもしれないが、 Lispプログラマが日常的に行っていることだ。 このアイディアは通常、マクロと呼ばれる方法で実現される。