プログラミングの世界にも,名著と呼ばれる書籍があります。なんだか古くさくて難しそうだなんて思うかもしれませんが,けっしてそんなことはありません。初版から月日がたっていても,今なお有効な示唆があるからこそ,絶版にならずに生き残っているのです。

 新しい技術やテクニックが学べるわけではないし,もっと他に読むべき本はたくさんあるような気もします。でも,以下の紹介を読んでみて,ちょっと気になる本があったら,書店で手に取ってみてください。

プログラミング作法
Brian W. Kernighan,Rob Pike 著
福崎 俊博 訳
アスキー 発行
2000年11月 355ページ
2800円(本体)
bk1で購入する
プログラム書法 第2版
Brian W. Kernighan,
P. J. Plauger 著
木村 泉 訳
共立出版 発行
1976年8月 236ページ
2900円(本体)
bk1で購入する

プログラミングのルールを学べる2冊

 最初に紹介するのは「プログラミング作法」です。本書は,コーディングのスタイル,アルゴリズムとデータ構造,設計と実装,デバッグ,性能などプログラマを悩ませる事項に対して,どのような行動をとるべきかを解説しています。著者の1人はC言語の開発者として著名なBrian W. Kernighan(ブライアン・W・カーニハン)氏です。

 本書の最初で登場する作法を紹介しましょう。変数名や関数名の名付け方です。「グローバルにはわかりやすい名前を,ローカルには短い名前を」,「関数には能動的な名前を」──。あたり前と思う方がいるかもしれません。でも,そうすると苦労しないで済むことに気がつくまで,どれほどの経験が必要でしたか? 本書を読めば,“プログラミングするときに守った方がいい重要なルール”の多くが,楽に手に入ります。なんらかのプログラミング言語をマスターしたプログラマは,本書を学べばこの先ずっと苦労することが減るはずです。全プログラマに強くお薦めしたい1冊です。

 本書のサンプル・プログラムは,多くがC言語またはC++で書かれています。C,C++,Javaのいずれかの基礎的な知識があれば,すべてではないにしろ,十分読み解けます。Visual Basicプログラマでも,C言語を解説した書籍が手元にあれば,十分理解できるでしょう。

 作法が気に入ったら「プログラム書法 第2版」も試してみてください。こちらは25年以上前に発行された古い本ですが,現在でも有効なルールも数多くあります。たとえば「『効率』がちょっぴりもうかるからといってわかりやすさを犠牲にするのはやめよう」,「速くしたかったら単純さを保とう」という具合です。これらの書法は,豊富なプログラム・コードの失敗例と,やさしい語り口の解説をともに明かされます。一つひとつの項目は短く,気軽に読み進められます。

 本書が例として挙げるプログラムはFORTRANで記述されています。FORTRANの書式はそう難しいものではありません。FORTRANの経験がまったくなくても,意外に読めてしまうものです。また,本書のルールはFORTRANの実装を前提としたものもありますが,それは無視して読み進めると良いでしょう。

プログラミング言語C 第2版
B.W.カーニハン/D.M.リッチー 著
石田 晴久 訳
共立出版 発行
1989年6月 343ページ
2718円(本体)
bk1で購入する

歴史に残るプログラミング書籍の名著

 さて,押さえておきたい名著として,もう1冊を紹介しましょう。「プログラミング言語C 第2版」です。著者はBrian W. KernighanとDennis M. Ritchie (デニス・M・リッチー)。二人の頭文字をとって本書は「K&R」と呼ばれています。C言語の原典としてあまりにも有名です。

 こう書くと構えてしまう方も多いかもしれませんが,本書はC言語を一からやさしく解説しており,現在でも普通にC言語の入門書として使えます。簡潔で見やすいサンプル・コードと,正確な記述は,Cの学習だけではなく,リファレンスとしても有効に利用できるはずです。

 Cで仕事をするためマスターしたいなら,より実践的な別の書籍の方が向いているかもしれません。でもあなたが,正しいC言語を学びたいと思っているなら,ぜひ本書の第1章「やさしい入門」から始めて見てください。プログラミング言語の入門書でよく登場する有名なサンプル・プログラム「hello, world」から始まり,その先を30ページほど読み進めるだけで,Cプログラミングでよく使う中核部分をもう習得できてしまいます。

いかにして問題をとくか
G. ポリア 著
柿内 賢信 訳
丸善 発行
1954年6月 248ページ
1500円(本体)
bk1で購入する

未知の問題に困らないために

 最後に紹介するのは著名な数学者George Polyaが著した「いかにして問題をとくか」です。これは数学の本ですので,例としてあげる問題も数学に関するものがほとんどです。高校で学ぶ数学の知識がないと,なにを言っているのかよくわからない部分もあります。

 一見プログラミングとは無縁に見えるかもしれませんが,そんなことはありません。本書のみどころは問題の解き方ではなく,問題をどうやって解けばよいか,その考え方です。プログラムを作っていて混乱したとき,解決の見込みがない状況に遭遇してしまったとき,本書は,どうすればいいかは教えてはくれないが,どう考えればいいかはちゃんと教えてくれます。

 本書では問題を解くステップを,(1)問題を理解する,(2)計画を立てる,(3)計画を実行する,(4)振り返ってみる──の四つに分けて解説しています。それぞれのステップで,そのステップを実行するときに意識すると効果的なポイントを解説します。たとえば(2)の計画を立てるときには,「似た問題を知っているか」,「問題を言い換えることができるか」などです。いくつかの数学の問題を解きながら,与えられた問題に対する対処法を実践的に学んでいきます。

 一つ,本書の最後のほうにある問題を紹介しましょう。「1匹の熊が,1点Pから南へむけて1マイル歩き,そこで方向を変えて真東に1マイル進んだ。そこでもういちど向きを変えて真北に1マイル進んだとき,ちょうど出発点Pに戻ったする。この熊はなにいろをしているか」。本書を読破したあとなら,混乱することなく,この問題の答えを導くことができるはずです。プログラミングしていて問題に遭遇したときも落ち着いて対処できるでしょう。ちなみに先の問題の答えは白です。わかりましたか?