出版社より献本御礼。

これだ!

Lispに足りなかったのは。

本書「Land of Lisp」は、Lispの、Lispによる、Lispのための喜劇comedy。これでわかった。

Lispに足りなかったもの、それは、笑いだ。

およそ Computer Science というものを(独学であれ学校であれ)学んだプログラマーで、Lispに一目置かないものは存在しない。いたらそいつはモグリだと謹んで断言していただく。今日日主に使われている電脳言語は、多かれ少なかれLispの薫陶を受けている。JavaScript, Perl, Ruby, Python はもちろんのこと、本書で好んでネタにされている C++ でさえラムダ関数を持つ。それが現代。

なのに、彼らのほとんどは、Lispではなく、「言語をフルを扱えない愚民どもがアイディアをつまみにくる言語」でプログラムすることを選ぶのだろう。

Lispersが他の言語(er)?を嗤うことはあっても、Lisp自体を笑いの対象とすることはなかったからだ。

笑いと嗤いは違う。ここでいう嗤いは以下の"laugh"に相当する。

404 Blog Not Found:サルが使おうとすると怒られる気がする言語
Programming Perl
You can program in Perl Baby-Talk, and we promise no to laugh.

そのありようは、右の図からも伺うことができる。@geekpageGeekなぺーじ:プログラミング言語ヒエラルキーから拝借したものだが、この図の通り、彼らが他人を見下すことはあっても、見下されることはなかったのだ。

"Lispers know the value of everything, but the cost of nothing."、「Lispersはどんな値でも知ってるが、ものごとの値段は何も知らない」という名言があるが、これをもじれば、"Lispers know the programming of everything, but nothing of the programmer"「Lispersはどんなプログラミングも知っているが、プログラマーのことは何も知らない」となるだろうか。「若者のLisp離れ」はその自然の結果であり、そしてLispersが負った代償priceである。

その意味で、本書のネタもほとんどは「他の言語を嗤う」に費やしている点は相変わらずである。RubyもPythonも著者の目からすれば「クロマニヨンの末裔」だ。しかし本書には、ついにLispを笑うネタが登場するのだ。

Haskellの、おかげである。

ある意味、Haskellは純粋関数型と遅延評価という、Lispが後回しにした宿題をきちんとやってのけた言語でもある。その意味でHaskellにはLispを笑う資格が確かにある。私が一番笑ったのは、よって13.5章。「副作用仕様罪」www

それでは関数型プログラミングを学ぼうとするものはLispを捨ててHaskellに行くべきなのだろうか*0?

ご安心を。それでもLispを学ぶべき理由は、きちんと残っている。

404 Blog Not Found:(define 独学 再帰) - 書評 - 素数夜曲:女王陛下のLisp
Lisp:S式の理由
S式は言ってみれば言語の構文木そのものです
つまり、Haskellも含め他のプログラミング言語が"parse"して機械的に行う部分を、Lispであれば素手でいじるのだ。仕事で用いるには少々面倒くさいし見づらいが、しかしプログラムという行為の核心に、これで手に触れることができる。
Lispは処理形を作るのも比較的容易な言語であるということ。他の言語で実装する場合もそうだし、Lisp自身実装するともなればなおの事。仕事で用いる言語のほとんどが、一流企業の禄を食む一流プログラマーが何人、時には何百何千人もその改善に取り組んでいるのに対し、Lispの実装は学部生の課題に何とか出せる難易度。実際私がはじめて正規に取った computer science のクラスの最終課題は、 scheme による mini scheme の実装であった(schemeやS式のSの字も知らなかった学生に一学期でそこまでというのはかなり厳しい課題ではあるが)。構文木を作らなくていいということで、そこまで難易度が下がる。

ベタに学べないなら、ネタで学ぶしかないじゃない。あなたも、わたしも。

'(Dan the ((Casual and Occasional) Lisper))

追記: ところでColophonがないのはなんでなんだZe!これでは最低限文化的な動物本にならないではないかっ!Lisp星人は獣でないから人だからいいのか?

  1. 北米大陸で「北に行く」というのは、「メキシコを捨てアメリカに行く」の暗喩でもある(ちなみに両国とも"the United States")。本書でもネタとして使われているが、どう使われているかは見てのお楽しみ。
目次 O'Reilly Japan - Land of Lisp より
謝辞
はじめに
Lispがクールで、そして奇妙なわけ
Lispがそんなにすごいなら、どうしてもっとたくさん使われないのか
Lispはどこから来たのか
Lispの力はどこから来るのか
第I部 LISPは力なり
1章 さあLispを始めてみよう
2章 はじめてのLispプログラム
3章 Lispの構文の世界を探検する
第II部 LISPは対称なり
4章 条件と判断
5章 テキストゲームのエンジンを作る
6章 世界とのインタフェース: Lispでのデータの読み書き
6.5章 lambda:とても大事な関数なので特別に章を分けて説明しよう
7章 単純なリストの先へ
8章 親父のワンプスとは一味違う
9章 より進んだデータ型とジェネリックプログラミング
第III部 LISPはハックなり
10章 loopコマンドによるループ
11章 format関数でテキストを表示する
12章 ストリーム
13章 Webサーバを作ろう!
13.5章 美しき哉 関数型プログラミング
第IV部 LISPは科学なり
14章 関数型プログラミングでLispをレベルアップ
15章 ダイス・オブ・ドゥーム:関数型スタイルでゲームを書こう
16章 マクロの魔法
17章 ドメイン特化言語
18章 遅延プログラミング
19章 ダイス・オブ・ドゥームに
20章 ダイス・オブ・ドゥームをさらに面白く
エピローグ
訳者あとがき
索引