プログラミング講座トップ ひつじTOWN デジタルシープラーニング

ひつじのJAVA言語入門への道 Coffee Break


こぼれ話のようなちょっとした思い出話です。 暇な時にお読みください。

■Lisp

Lispというのは非常に便利な言語なのですが、数あるプログラミング言語のなかでも、特に特殊です。どう特殊なのかを説明するのは事実上不可能ではないかと思っています。
例えば、象という動物を見たことがない人に、「鼻が異常に長くて、物を掴むことができる。耳が非常に大きくて、体も熊より大きい4つ足で歩く動物」と説明するようなもので、説明が不可能な気がします。
筆者の経験したことのある言語で一番長いのがこのLispです。最初に触れたのは東京大学で作られたUTI LISP(近山氏ら。現東大教授)でした。おそらく日本版の最初のLispだと思います。現在でも使われています。
直ぐにVAX LISPというCommon Lispに移りました。ガイ・スチール(Guy L. Steele)が書いた「Common Lisp: The Language」にずんぶんお世話になりました。これしかなかったのもありますが^^;
ガイ・スチールさんもMITで修士号、博士号を取得しています。後にビル・ジョイに誘われてJavaの開発に参加しています。
さて、その頃はAIブームで、あるソフトウェアをリコーの3B2という純正のUNINマシン( System V。AT&T)に移植することになりました。それにはLispが必要なのですが、3B2で稼動するLispがありませんでした。そこで、京大の数理解析研究所が作ったLisp(KCL : Kyoto Common Lisp) があるので貰って来いと言われ、京都を訪ねたことがあります。確か1987年頃だったと思います。その時にKCLを開発された湯浅先生(現京大教授)と萩谷先生(現東大教授)に初めてお会いしました。大変丁寧に応対して頂き、大いに恐縮し、ヒア汗たらたらでした。特に、インストール用のテープを作って頂いている間に、企業ではLispはどのように使っているか、何か問題はないか、などを熱心にいろいろと尋ねられ、駆け出しプログラマの私はタジタジで、ダウン寸前でした^^;
その後、リコーが開催したセミナで湯浅先生とご一緒になり、またまたびっくり。前半に湯浅先生が「Lispのガーベッジコレクション」について講演され、私が「エキスパートシステムとLisp」というテーマで話をしたことがあります。大半の人は湯浅先生の話を聞きに来られた人ばかりなので、これまた冷や汗たらたらで・・・

■Flavors

筆者はちょこっと触った程度でしたので、当時Symbolics社と仕事していた当事の上司に尋ねました。その返事が『いい感じ』でしたので、そのまま掲載します。
>flavorというのはSmalltalkやC++と並んで当たり前に出てきますね。そんなに有名だったのですね^^;

そのとおりです。
LISPと一体化していて、一番実用的だったんじゃないでしょうか。
SymbolicsのWindowシステムはFlavorでした。
一番基本のオブジェクトは vanilla flavor と言いましてね、 これを継承して上位のflavorを定義するんですよ。マルチインヘリタンスもできたんですよ。 Smalltalkと違って。

defflavor というLisp関数でflavorを定義して、
defmethod というLisp関数でmethodを定義して、
make-instance というLisp関数でinstanceを定義して、
send というLisp関数でmessageを送る。

という感じでした・・・。結構、いい感じでした。

>クラスを定義するのではなくて、フレーバーを定義してましたので、今思うと洒落てますね。

SymbolicsでLispを書くということはオブジェクト指向を使うのが当たり前だったんです。

オブジェクトはフレーバーで、フレーバーの基本はバニラフレーバーなんて、洒落てましたね。
楽しい時代でしたねぇ。
私がNTTの通研でオブジェクト指向を教えていたんですからね・・・可笑しい時代でした。

では、邪魔はこれくらいで。
このSymbolics社のLisp専用マシンは、人工知能用マシンとしても日米で多くの企業や大学、研究機関で使われました。一斉を風靡したと言っても過言ではありません。日本ではニチメンと東洋情報システム(現TIS)が日本シンボリックスという会社を設立しSymbolicsを販売、サポートしていました。今となっては伝説のコンピュータと言えます。
Symbolics社は後に倒産しますが、そのSymbolicsを研究した論文があります。Symbolics社の顛末は高度な技術を持つベンチャ企業のある種、典型的なストーリーでもあります。

A failure of heterogeneous engineering


[←] 第5回へ | [↑] プログラミング講座トップへ