2013年04月18日 15:30 [Edit]

言語を支えるコンセプト - 書評 - コーディングを支える技術

出版社より献本御礼。

404 Blog Not Found:紹介 - Software Design 2011年01月号/Web+DB Press Vol. 60
Vol.60ということは、隔月なので10周年。それにふさわしい特集を組んでいます。「知るべき言語設計の基礎知識」、第一章をMatz、残りをid:nishiohirokazuが書いているのですが、これ永久保存もの。

まさにそのとおりとなった一冊。


本書「コーディングを支える技術」は、上述のとおり「知るべき言語設計の基礎知識」を大幅に加筆して一冊の本にしたものなのだが、書名はもう少し考えて欲しかった。これではまるでエディタやIDEといった、コーディングに用いる道具について書かれた本に見えてしまう。私なら、「言語を支える概念コンセプト」としていた。本書の主題は、「脇役」ではなく「共通基盤」。

書名を除けば、まさに「こういう本を待っていた」という一冊。いや、正直自分でも書いてみたかった。しかしここまで言語横断的かつ歴史縦断的に書けるかというとそれも疑問で、悔しさ1%賞賛99%といったところ。その縦横無尽さは、目次を一瞥しただけで伺える。

と同時に、本書はおよそ「一人前」のプログラマーであれば、かならずどこかに不満を感じる一冊ともなっている。それもそのはず、本書はわずか250ページ。本来であれば1000ページでも全然足りない主題をこのサイズに要約したら、余白が足りなくなるのも当然である。

それで、いいのである。

本書との「正しい付き合い方」は、「読む」のではなく「余白を読者自身が掻いていく」なのだ。たとえばスコープの説明一つとっても、同じレキシカルスコープでも関数単位なのかブロック単位なのかは言語単位どころかバージョン単位で異なる。自分が使っている言語がどうなっていて、どちらに向かって向かっているのか、自分で調べてみよう。そしてその過程で、別の言語ではどうなっているのかも調べてみよう。その過程で、あなたは自分が何を知らなかったかすら実は知らなかったことを発見するはずである。

とはいえ、評価戦略がまるまる抜けてしまったのは残念である。かつては事実上先行評価しかなく、評価戦略において選択肢があること自体ほとんど知られていなかったが、今では遅延評価を主体とする言語も普及したとまでは言えないものの、充分実用的に使われるようになってきている。著者はもちろんHaskellを知っているし、本書にも登場するにも関わらず、これが抜けているというのはなんとももったいない。もし改訂版を著す機会があったら、絶対に一章割いていただきたい。

しかしそれさえ、前述のとおり利点に思えてくるから不思議だ。本書の一番の効用は、読者を「痒く」することにある。その痒みを癒すには、さらに学んでいくしかない。逆に本書を読んでもまるで痒みを覚えない人は、まだ初心者だということ。まずは自分の「第一言語」を一通り使いこなせるようになろう。そうして改めて本書に目を通せば、驚くほどの痒みを味わえるはずである。

Dan the Man with too Many Concepts to Learn


この記事へのトラックバックURL