大型連休にやっていたことで、大型連休の総括に書かなかったことがひとつある。それは Lisp への挑戦である。
Yet Another Scheme Tutorial というマテリアルを利用した。そしてきょう、それをひとまず一周走り終えた。
どうしていまこれを学ぼうと思ったか? ハッカーたちが口を揃えて勧めるものだから、たしかに何かがあるに違いないと思ったのである。いうなれば直感である。なかでも大きく影響を与えられたエッセイをふたつあげると、それはこれらである。
まずは Steve Yegge の「バベル案内」。お気に入りのパッセージを引用する。
Lispを学ぶのは簡単ではない。大きな飛躍がいるのだ。CみたいなプログラムをLispで書けるというのでは十分でない。そんなのは無意味だ。CとLispはスペクトルの反対の端に位置している。他方が上手く扱えない領域で大きな力を発揮するのだ。
それから Paul Graham の「普通のやつらの上を行け」。同じように引用するがこちらは短く凝縮されたパンチラインだ。
Lispの力は、ライバルがそれを理解できないということによって増幅されるんだ。
こんな熱いアジテーションをされておいて、「やらいでか!?」という熱狂を与えられずにいられようか?
どちらのエントリにしても、 Lisp を学ぶのは容易ならざる道だというのは一致している。しかし、「みんながやっているから」という理由だけで、あの言語つぎはこのフレームワークそれから機械学習チュートリアル…と節操ない消費主義で踊らせてわれわれプログラマを消耗させようとする技術市場にヘキエキしていた僕にとって(このことは年初に今年の意気込みとして書いた)、この揺るがない古典の風格を帯びた言語は救済の光にみえたのである。
これからいっそうこの小さな言語に勤しむことにするか? いや、いまは CS:APP を読み進めることの方を優先したい。このままインテンシブに Lisp の独習コースを催すことはしない。
とはいえ、機をみてとりくみたいマテリアルははっきりしている。ひとつは L-99 。 Lisp 向けの問題集である。いわゆる kata というものと思っている。もうひとつは SICP 、いわゆるウィザード本である。こちらの方が正統かつ王道のおもむきがある。
今回使ったチュートリアルは、後者のウィザード本を読めるようになることをゴールにしているのだという。つまりそれを終えたいまであれば読めるはず。teachyourselfcs.com でも推奨されているので、遅かれ早かれ挑戦することになるだろう。あるいはなんと全文が HTML で公開されているので、いつでもはじめられる。
慌てることはしたくないが、胸は高鳴っている。プログラミングが楽しいと心から思える機会を新しく与え直されていることに感激している。