数理システム


◆◆◆ Script Languages ◆◆◆


(2006年11月21日に開催した Lisp セミナー パネルディスカッションに参加して)

スクリプト言語ってのがあります。つづりが P や R で始まるあれです。
これについては次の言葉で言い付くされているかと思いますので、引用しておきます。
(Common) Lisp has been the language from which inferior people picked good ideas when they could not handle the full language. -- Erik Naggum
これで終わればいいんですが、
先日のセミナにおいて、パネルディスカッションの際、 司会も兼ねてたもんですから、 質問表をわたされてそいつを読み上げる役を負わされており、 その中に、あるスクリプト言語と Lisp の比較について意見を求めるものがあって、 読み上げたあとしばしムッとしてしまいました。
そのためわたし自身も意見を求められながら、 うまく話すことができなかった。
ここで整理しておきます。

色々調べてみると、スクリプト言語の連中というのは、 何かといえば Lisp を引合いに出すのが常套になっているようです。

Lisp の不幸の1つに、
Lisp を使わない奴に限って Lisp について語りたがる
というのがあるんですが、今回もう1つ加わったのは、
Lisp を知らない奴に限って Lisp を他のもの、なかでも自分の自慰行為の結果と比べたがる
Lisp の評論をとうとうとやるわけです。
これがまた「ピラミッドは宇宙人がつくった」的なトンデモ論で、 これだけでもずいぶん失礼な話ですが、
彼等が鬼の首とったように言うことの1つに Lisp はマイナーだから云々、というのがあります。
しかし ANSI (XJ13) から正式に The Standard が出てる以上にプログラミング言語のメジャー性を裏付けるものってあるんでしょうか?

またこの とんでも さんたちは 「Lisp の良いとこ取り」 なんてことをへっちゃらで言います。
Lisp の良いとこを取ろうと思ったら最低 ANSI にあるものは全部入れとかないといけないんですが、 そういうあたりまえのことに気がつかないんですね。
ANSI CL に無駄な仕様ってのは1つもありません。
逆に ANSI CL に足りないものはいっぱいあります。
Metaobject Protocol がそうですし、他にも weak objects だとか、 object oriented な stream だとか。


「良いとこ取り」と根っこは同じなんでしょうが、
言語仕様を小さくまとめてライブラリで言語をリッチにしていこう、 という考え方があります。残念ながらこれは端的に間違ってます。
ライブラリで言語はリッチになりません。

例えばマクロがどの時点でどういう環境を抱いてマクロ展開されるかは、最初からマクロを言語仕様に持ってないと、あとで付け足しのように決められることではありません。
コンパイラについても同様で、あらかじめ言語仕様になければ、 eval-when のような概念がそもそも出てこない。proclaim, declaim, declare なども同様ですね。
special 変数もそう、progv がライブラリで提供できますか?

スクリプト言語界から発信されるトンデモ論に対処するには、 やはり ANSI Common Lisp をしっかり理解する、ということだと思います。

KURODA Hisao (2006-12-01)


[ Allegro CL Family 情報 ページへ ]



MSI Top | Solutions | Packages | Products & Service | About MSI | Recruit | Site Map
Copyright © 2003-2008 MATHEMATICAL SYSTEMS Inc.