出版社より献本御礼。

夏休み一つかけて取り組みたい吉田独習本が、これでまた一つ。

しかし、今度は紙と鉛筆に加えて、パソコンのご用意も。

本書「素数夜曲」は副題が「女王陛下のLisp」なのだが、実質「素数夜曲」と「女王陛下のLisp」の合冊だといってよい「付録」となっている後者の分量は、「主題」のそれを上回る。

目次 - 東海大学出版会|書籍詳細>素数夜曲より
増補改訂版・序
第0夜 梟は黄昏に飛翔する
第1夜 素数のメロディー
第2夜 ピタゴラスの調べ
第3夜 自然数のリズム
第4夜 整数のパーティー
第5夜 マエストロの技
第6夜 少数のメリーゴーランド
第7夜 切れ目の無い数へ
第8夜 異次元への飛翔
第9夜 素数はめぐる
付録A プログラミング言語の発見
付録B プログラミング言語の骨格
付録C プログラミング言語の拡張
付録D 女王陛下のLISP
付録E 数表(素数・原始根)
後書(Postscript)
索引

要するに主題である整数論を、プログラミング言語schemeと一緒に学ぼうという大変意欲的な一冊である。まさに「全方位学習法」。GEBこと"Gödel, Escher, Bach"はここが弱かった。出版当時はまだパソコンは一般的とは言い難く、Lispは高嶺の花だった。同書でつまづいた人は、本書で独習後再試行してみよう。すらすら読めるようになっているはずだから。同様の理由で、本書はSICPに取り組む前の本としてもおすすめだ。

それにしても、オビの

(独学とは再帰なり)

にはしびれた。ほんと、そのとおり。著者が本書で用いるプログラミング言語にschemeを選んだのも、その点において実に自然である。

とはいうものの、再帰は別にschemeの特権ではない。単なる再帰であればCですらサポートしているし、λ=lambdaを扱える言語とてもはや珍しいものではない。メイジャーなスクリプト言語であればむしろサポートしていない方が珍しい。そして今では純粋関数型という、ある意味「Lispの宿題をきちんとやってのけた」Haskellも存在する。

それでも、著者はschemeを選んだ。私が著者でもそうしていただろう。

著者の理由は本書で確認していただくとして、私の理由は本書の推奨schemeでもあるgaucheの父、shiroこと川合史朗の以下の言葉に集約される。

Lisp:S式の理由
S式は言ってみれば言語の構文木そのものです

つまり、Haskellも含め他のプログラミング言語が"parse"して機械的に行う部分を、Lispであれば素手でいじるのだ。仕事で用いるには少々面倒くさいし見づらいが、しかしプログラムという行為の核心に、これで手に触れることができる。

独習という行為の欠点の一つに、共に学ぶものからのフィードバックがないということがある。独習をうまく続けるには、よってそれを補って余りある手応えが必要なのだ。この点においてLispほど手応えがある言語を私は思いつかない。

以上の理由に比べれば他は些細ではあるけれど、ここで紹介しておく価値はあるだろう。一つは、Lispは処理形を作るのも比較的容易な言語であるということ。他の言語で実装する場合もそうだし、Lisp自身実装するともなればなおの事。仕事で用いる言語のほとんどが、一流企業の禄を食む一流プログラマーが何人、時には何百何千人もその改善に取り組んでいるのに対し、Lispの実装は学部生の課題に何とか出せる難易度。実際私がはじめて正規に取った computer science のクラスの最終課題は、 scheme による mini scheme の実装であった(schemeやS式のSの字も知らなかった学生に一学期でそこまでというのはかなり厳しい課題ではあるが)。構文木を作らなくていいということで、そこまで難易度が下がる。

そして実装が簡素だということは、実行が軽量であることも意味する。「型落ちのコンピュータと無料ソフトの組み合わせで本書の内容は再現できる」とは著者の弁であるが、型落ちのパソコンどころか、今やブラウザーが一つあれば本当に実行できる。以下はそんな実行環境の一つである。Y combinator - Rosetta Code からコピペしてきたコードが貼ってあるが、本書のサンプルコードもグラフィック出力が必要なものを除いて全てここで実演できる。

この内容で3,600円。「オイラーの贈物」と「虚数の情緒」を加えても一万円を切るとは。

Postscript
研究を進めるものは金や設備ではない。智慧であり工夫である。数学は、既存のゲームより遥かに刺戟的で奥深い。本書は最初に取り組むべきゲームのルールブックである。知力・体力の続く限り Game Over はない。学ぶことが人生である。ならば楽しく学ぶことが、人生を楽しむことではないか。

Let the game begin!

'(Dan (the Teacher (of (His own))))