そろそろLISPブームが再来する
思うに、LISPには名著が多い。100年に一度の名著であるSICP本*1は言うに及ばず、 ハッカーと画家 コンピュータ時代の創造者たちで有名なPaul Graham氏のOn Lisp。 あと、日本のLispハッカーとして名高い竹内郁雄先生の初めての人のためのLISP (ソフトウェアライブラリ (3))。この本は、何年も前に絶版になっているが、目次からして、なにやらおかしい。
中学生がふざけて書いているのかと思わせるような目次だが、内容はすこぶる明快で、記号言語処理の本質的な部分を優れた知見で捉えている良書だと思う。この本は、近々復刊するようだ。*2 Paul Graham氏が、LISPでASPサイトを書き、それがYahooに買収されてYahoo!Storeになったというのは有名な話だが(ちなみに、Yahoo!の45万5000株(4960万ドル相当)と交換でYahoo!に買収された/1998年)、そこから10数年経た現在こそ、LISPでWebサイトのプログラムを書くのにふさわしいのではないかと思う。 普通、Webサイトを作るとき、DBへのアクセスはSQLなり何なりを使うし、画面の整形には何らかのテンプレートフレームワーク(smartyなど)を用いるので、LISPが他の言語の10倍遅かろうとページが表示されるまでのレスポンスや、サーバー負荷はほとんど変わらないと思う。 |
それにJavaScriptのような動的な言語があれだけの速度で実行できるのだから、LISPも近代的なJITでは他の言語(Perlやphpなど)と遜色がないぐらいの速度で動くと思う。
どうせWebサイトのプログラムはそんなに長いプログラムにはならないので、ソースの可読性が多少悪くとも全く問題がない。(かも知れない)
あと、会員のログイン管理をしないといけないようなWebサイトは、ユーザーからのログイン状態や画面遷移に関して直前の操作を記録しておかないといけないことが多々あるが、そういったパラメータの引き渡しにしても、LISPならLISPの実行環境まるごとを取得して、それをDBに文字列として保存しておけば、次にそのユーザーからアクセスがあったときにその実行環境をDBから復元すれば楽に書けるのかも知れない。なんだかミラクルだ。
まあ、ASP.NETでも一時的に記録しておかなければならないパラメータひとつひとつをDBにテーブルを作って格納するのは面倒だから、XmlSerializerか何かでシリアライズして会員レコードにでも突っ込んでおくようなことをする(?)だろうけども、それよりさらに柔軟性がある。
Visual Studio 2010でF#が標準搭載されるらしいけども、LISPやF#のように関数をfirst-class objectとして扱えるというのは、今後、重要になってくるんじゃないかと思ったり…。
*1:→「計算機プログラムの構造と解釈」のこと。日本語版の翻訳の質はいまひとつ。ちなみに原著はオンラインで読めるので英語が苦手でなければ是非原著のほうを。
*2:情報ソース → http://www.bk1.jp/product/03125439 発売予定日が2009.6になっているが、もう7月なんですけど…。→と思っていたら「発行年月 : 2009.12」と発売が延期された模様…。