書評日記 第41冊
LISP P.H.ウィンストン、B.K.P.ホーン
培風館

 記念すべき41冊は(なんで、41冊めが「記念」なのか・・・俺が51冊と間違えたから。あーもう。)LISPの本である。

 LISP(リスプ)言語、名前だけは知っているかもしれない。もしかしたら、この言語でプログラミングをしたことがあるかもしれない。また、プログラムとは全く関係ない生活を送られている方もあろうが(でも、少なくともホームページを掲げている諸君諸嬢は、少しはプログラム言語というものを知っているのである。そう、HTML言語というのは、プログラム言語だ。しかも、その中にも、LISPと同様な概念が潜んでいる。)心配はいらない。LISPのもとになった概念、または、LISPを使って構築される概念は、日常にあふれているのである。それは、この後の文章を読まれると多少、わかるだろう。

 さて、LISPとは何か。簡単に説明しよう。まず、LISPは、「List Processing」の略である。この言語で組まれたプログラムソースを見た事がある人はわかるだろうが、「括弧と単語」のみで構成されている。具体的なソースは省略するが、一般に知られている言語(C言語やperl、Javaなどなど)とは異なり、「括弧と単語」しかないと言い切れるぐらい、非常にシンプルな構造を持った言語である。
 LISPは人工知能プログラミング用の言語ともいわれる。ただし、先に述べたような言語を使っても人工知能の研究はできるし、また、LISP以外の人工知能用とされている言語(prologとか、smalltalkとか)もたくさんあるので、人工知能「専用」というわけでもない。
 実用例をあげれば、有名なUNIX用のエディタEmacs(イーマックス)(国際言語対応のMule(ミュール)というのも、この仲間だ。)がある。よくエディタでは、マクロ言語という単純作業を記述するような言語が内蔵されるようになってきているが、このEmacsのマクロ言語がLISPなのである。もう少し正確に言えば、Emacsの基本機能(カーソルを上に移動するとか、一文字消すとか)以外の動作はすべてこのLISPで書かれている。

 ちょっと、前置きが長すぎたが、話を進めよう。そのように普通にも使えるコンピュータ言語LISPを、なぜ特別扱いするのか。これは先に述べた「括弧と単語」しかないシンプルな言語体系が、そうさせている。ある意味では、この言語はシンプルすぎて使い物にならない。現にEmacsのLISPコードは、括弧のお化けと称される。
この形式は、『括弧は、その中に含む単語の列を関係付ける』ことを意味しているのだが、このままではわかり辛いので、ちょっと例を上げる。

 「『例えば』という言葉は   ( 既に、これが、入れ子になっている。 )  例を提示し、無用な誤読を防ぐことに使う。」


のようにそれ以前の単語ないし文章を補足する意味で、括弧がつかわれている。LISPコードは示さないが、だいたい同じようなものである。
 上の例、よくみると、括弧の部分が英文法でいうところの「関係代名詞」をあらわしていることがわかるだろうか?LISPという言語も、日常からうまれたのであるから、その概念は、日常にもあるに違いないことがわかるだろうか?(ただし、日常言語で人工知能のような研究をしないのは、「雑音」が交じっているからである。このためにLISPのような、極力雑音を排除したスタイルで研究を進めると「そこになにがあるのか」が見えてくる。これは、化学系の「純粋培養」の考え方と同じである。)

 さて、これらの「括弧」とか「関係代名詞」などの考え方を総称してLISP言語では「入れ子構造」という。もちろん、同じ概念はこれに限らず、プログラミングでいうところの「関数構造」・「再帰関数」・「マクロ言語」、数学でいうところの「帰納法」・「フラクタル」、文学でいうところの「メタ化」・「超言語」がある。当然、本としては、「ゲーデル・エッシャー・バッハ」・「虚人たち」・「ドグラ・マグラ」などなど、がある。
 なにも上で挙げたものすべてを知る必要はないし、これらすべては同じ概念から端を発しているので、ひとつがわかれば、芋蔓式に理解ができると思う。(もちろん、最初のきっかけは必要だ。0と1との間には大きな隔たりがあるのだ。(ま、これが分かればそれでよし。分からなければ、ま、ここまで読み進めてはいないだろう。))

 さて、この「入れ子構造」の意味。長々と続くのであるが、ここで一旦中断したい。(あまりにも、長々と続くので、いつまでたっても終わらない。)

 そこで、ちょっとイジワルではあるが、今回用に用意したメモを、メールにて送ることにしたい。(ここまで来て、メモの半分までしか来てない。)
 下にあるチェックボタンを選択し(ホームページ(ない方は、記入しないでよろしい。)のみ、または、メモはいらないが、読んだことを示しておきたい諸君諸嬢は足跡として)「送る」ボタンを押して欲しい。(うまく、送れない方は、メールでも結構。メールアドレスの方は、学生のように送り先が異なる場合は書いてください。)
 ま、所謂「読んだよ」ボタンなんだが、毎日、メールを送るのもなんだし、不定期的にこういうことをするつもりなんで、以後、よろしゅう。

update: 1996/07/09
copyleft by marenijr