コンパイラの
構成と最適化

中田 育男 著
朝倉書店 発行
1999年9月
521ページ
1万500円(税込)
TCP/IPによるネットワーク構築 Vol. ?/
Vol. ? Linux/POSIXソケットバージョン

Douglas E. Comer 著(Vol. ?),
Douglas E. Comer,David L. Stevens 著(Vol. ?)
村井 純,楠本 博之 訳
共立出版 発行
2002年8月(Vol. ?),2003年10月(Vol.?)
650ページ(Vol. ?),497ページ(Vol. ?)
8190円(Vol. ?,税込),6930円(Vol. ?,税込)

 プロのソフトウエア開発者として生計を立てるようになって20年以上になります。1980年代前半からこれまで,インターネットに代表される実に多くの変化が我々の業界に起きました。何とか生き延びてこられたのは,はやり廃りに惑わされず,基本を身に付けてきたからだと思います。以下では,僕に影響を与えた本を中心に紹介します。紹介したい本の中にはすでに絶版になっているものも多く,その場合は新版や代わりになる本を取り上げています。

 駆け出しのころはプログラミングのことが知りたいと思って勉強していましたが,仕事をしていると,システムやプロジェクトに対するアプローチや考え方を学ぶ必要を感じました。そのときに出会ったのがGerald M. Weinbergの本です。彼の本にはどれを読んでも触発され,非常にためになりました。今1冊挙げるなら「コンサルタントの秘密」(113ページ)を推します。

 プログラミングでは発想の転換によって複雑な問題が簡単に解けることが多いものです。Jon Bentleyはその妙技を米国計算機学会誌の連載エッセイ「Programming Pearls」に書きつづって好評を博しました。それが本になったのが,「プログラム設計の着想」「プログラマのうちあけ話」(近代科学社発行)です。これらは入手が難しくなったので,代わりに「プログラム設計の着想」の第2版「珠玉のプログラミング」(ピアソン・エデュケーション発行)を紹介しておきます。

 コンパイラは絶対に勉強しておく価値があります。非常に深く研究され,言語理論など多くの蓄積があります。理論がしっかりしているものは,一度勉強しておくと一生役に立ちます。コンパイラの定番本としてはAlfred V. Ahoほかが書いた通称ドラゴンブック「コンパイラ—原理・技法・ツール」(104ページ)が有名ですが,ここではもう一冊,中田 育男著「コンパイラの構成と最適化」を挙げておきます。中田先生は,日本のコンパイラ研究の第一人者で,本書には随所に先生の日立でのコンパイラ開発経験が書き込まれてあり彩を添えています。類書では軽く触れるだけの事柄も,なるほどそうやって作るのかと納得できます。

 コンパイラとくれば次はOSです。ここではAndrew S. Tanenbaumの「OSの基礎と応用」(94ページ)を推薦しておきましょう。これ1冊でOSの基礎から実装まで一通り学べます。Tanenbaum先生はどの分野を書かせてもベストセラーを書ける人で,ネットワークや分散システムなどの著作もあります。ネットワークについては,Douglas E. Comerの「TCP/IPによるネットワーク構築 Vol.I Vol.III」を推します。旧版はVol.IIがあり,XINU(ジニュー)というOSまで作ってTCP/IPの実装を見せてくれましたが,新版ではなくなっています。代わりにWindowsのWinsockバージョンがあるのが時代の流れでしょう。

 デザインパターンとUMLは,今ではプログラマの必須知識になりました。デザインパターンはGoF本が定番ですが,よくわからなかった人は,実装しながら学べる点で,結城 浩著「増補改訂版Java言語で学ぶデザインパターン入門」(ソフトバンク パブリッシング発行)がいいでしょう。僕はこの本の「マルチスレッド編」を読んで,マルチスレッド・プログラミングにもいろいろ有用なパターンがあることを知りました。

 プログラミング言語というと,今から25年前にLispを学んだことが,プログラマ人生のみならず,僕のものの考え方,世界の捉え方に大きな影響を及ぼしています。LispはいまCommon LispとSchemeの二つが主流です。米MIT(マサチューセッツ工科大学)の教科書であり,Schemeを使ってプログラミングの本質を学べるのが「計算機プログラムの構造と解釈」(ピアソン・エデュケーション発行)です。これをじっくり読めば世界をどうモデル化しプログラムにしていくかが学べます。ちなみにMITの授業では半年でこの本を終わらせるそうです。

 Lisp本は最近人気がなく,僕が勉強したかつての名著も廃刊になっていて残念です。代わりにSchemeの教科書としてR. Kent Dybvig著「プログラミング言語SCHEME」,Common LispについてはPaul Graham著「ANSI Common Lisp スタンダードテキスト」(ともにピアソン・エデュケーション発行)を挙げておきます。Schemeの実用的処理系として人気が高いGaucheについては,http://www.shiro.dreamhost.com/scheme/index-j.htmlをどうぞ。ここにあるLispに関するエッセイをぜひ読んでみてください。