読んでて楽しい本のネタが、そろそろ尽きてきました。 ためになる『読み物』という観点で紹介していきます。
プログラミング、あるいは、ソフトウェア開発(ソフトウェア =プログラム+ドキュメントである)という人間の営みに光を 当てた好書。示唆に富んだ本であると同時に愉快な本である。 訳は最近出版されたが、原書が発行されたのはかなり古い。 取り上げられている機械が相当古いのだが、そこに目をつぶれ ば、本書の内容は現代にも完全に通用する。 特に、第2部「社会活動としてのプログラミング」のエゴレス 方式は要チェックである。
プログラムあるいはソフトウェアを作るとき、 もっとも大切なのは、「解決すべき問題は何なのかを理解する」ことである。 これができれば、道のりの半ばを過ぎたようなものだ。 残念ながら、凡庸な才能しか与えられていない私のような人間には、 そこに達するまでが大変なのである。 日々、「理解したつもり」と試行錯誤の繰り返しである。 問題を解決し終えた後で、 「解決すべき問題はこれだったのか」と気づくことも(が)多い。
本書は、コンピュータの専門書であるはずの本なのだが、 コンピュータのことがほとんど現れない。 しかし軽妙な喩え話によって、 ソフトウェア作りに付きまとう問題解決の落し穴とその解決法を ほのめかしている。
(実は『絶妙』という単語の方が適切なのかもしれない。 凡人である私には、どこまで問題解決の本質に迫った話が書かれているのか はかりかねるところがある。)
ほかにもワインバーグの著書は、面白いものが多い。衝動買い しても損はない。
かつて「ソフトウェア開発の神話」として出版されていたこの 訳本は、日本ではしばらく絶版となっており、再版を期待する声 が数多くあがっていた。95年、原著が発行20周年を記念して改 訂されたのを機に、新しい訳本が登場した。ソフトウェアに関 わる仕事をするなら必ず読んでおきたい古典的名著。
世界で最初のコンピュータは何だろうか?
この問題を10人に出すと、多分3つくらいの答が返ってくるのではないか。 コンピュータの教科書の最初の方に出てくるまことしやかな話は、 実はずいぶん不確かな情報なのである。 著者が本書を書きはじめた動機の一つは、 「ひどいフィクションがコンピュータの歴史としてまかり通っている」 つまり「孫引き、ひ孫引きを繰り返している」うちに 「最初はあやふやであったものが、だんだん拡大して、 ついにウソから真っ赤なウソになってしま」っているという 現状に対する驚きであった。
そもそも技術革新は、歴史の積み重ねの上に成立するものである。 一人の天才がある日突然アイディアを得、 次の日から世界が変わってしまうというものではない。 コンピュータも、 複数の人間が別個の場所で努力を重ねていく過程の中で成立した技術だ、 ということが本書を読み進む中で理解できるだろう。
本書を貫く重要なキーワードであり、 著者が再三強調している概念が、アーキテクチャである。 コンピュータ・システムは、 電気信号のオン・オフの動作の水準から何段も抽象化の階段を登った末、 我々人間の前に知的な道具としての姿を見せる。 大雑把な言い方をすれば、この何段かある抽象の水準の設計のことを (コンピュータ)アーキテクチャという。
この抽象化の階段の段数がやたら多いというのが、 コンピュータ・サイエンス/テクノロジの特徴である。 コンピュータを使うだけでおしまいというならともかく、 専門家になろうとする者は、 コンピュータ・アーキテクチャをトータルに理解したいものである。
これは、UNIX についての普通でない本でだそうである。この本を読んで も、UNIX のコマンドを覚えるたしにならないし、プログラムを 書けるようにもならない。が、この本を読めば、UNIX について、 今までよりずっと深い理解が得られるはずだ。(ついでに、あ やしげな情報まで覚えてしまう。)
この本を読むと UNIX というのは文化なのだ、ということを感 じる。ソフトウェアは、良くも悪くも、使っている人間の思考法を規定してし まうという側面を持っているだが、UNIX の文化は、人の思考法を触 発し、知的活動の営みを発展させる力を持っているということ に、同意していただけると思う。
コンピュータに関わる人間たちの言葉遣いは、ちょっと変わっている。 専門用語がポンポン飛び出す。 何か難しい話をしているらしいと思いながら耳をそばだてていると、 べつに専門的な話をしているのではなかったりする。 今晩の食事の相談、昼間買った工作道具の出来の批評、 昨日終らせた役所の手続きに対する改善意見、はたまた人生相談までも、 『コンピュータの専門用語を駆使して』行なうのだ。 彼らは、世の中のすべての問題はコンピュータの専門用語を使って 説明できると信じているかのようだ。 専門用語がこんなに使われる学問分野も珍しいと思う。
このことは、コンピュータ技術の独特さに由来するところが大きい。 コンピュータは人類が初めて経験する自律的な機械であるために、 その動作を表すのに大胆な比喩を用いなければならなかった。 ソフトウェアづくりというものが人間の考える概念や表象と密接に 関わる活動なので、その専門用語はもともと高い一般性を持っている。 また、コンピュータは万能機械なので、そのソフトウェアは 世の中のあらゆる問題を記述できなければならない という事情も関係するだろう。
長い前置きになってしまったが、この本は、 コンピュータが好きでたまらないという人たち=ハッカーたち の間で使われる俗語を集めた辞書である。この本を読むことで、 コンピュータの専門用語が持つ意味の広がり、 比喩の面白さ(一般用語から専門用語、あいはその逆)、 優秀なプログラマの偉業、 不条理なソフトウェアが原因の喜/悲劇を知ることができる。
なお本書を愛読するものは、自分たちのことをハッカーと称し、 一方ネットワーク侵入者のことをクラッカーと呼んで蔑んでいる。
この本の副題は「基礎概念への最新面白ガイド」だが、 書籍の紹介としてそれ以上のことを書く必要はないだろう。 内容は、言語処理系、各種プログラミング言語、UNIX、 プログラミング・パラダイムである。 この本も結構古いが、古さはほとんど感じさ せないところが素晴らしい(Sun Workstation は、SUN-1 と SUN-2 という時代の本である)。
この3冊は、雑誌 bit の連載をまとめて単行本としたもの。 肩肘張らずに読むことができるが、 この本に載っている一編一編を読むに従って、 プログラミングやソフトウェアに関する洞察が深まるはずだ。
なお、ソフトウェア千夜一夜物語のうち、 萩谷さんの分が、 Essaysとして WWW で公開されているので、参照してほしい。
Lisp の書籍の紹介は他のページでやっているのだが、 本書は、型破りな規格外入門書で、 むしろ読み物の範疇に属すると思われるので、ここで紹介する。 というのは、本書は「はじめての人のため」と自称しておきながら Lisp ファンを喜ばせるようなことばかり書いてあるマニアックな本であり、 しかもまとまったプログラムの例は、最後の最後になるまで現れない、 つまり、最後まで読まないと決してプログラムが書けるようにならないという 入門書なのである。 勝手に断定するが、最後まで読んでも ほとんどの初学者はプログラムを書けるようにならないに決まっている。
しかし本書を読み終えたあなたは、 完全な Lisp 通になっているはずである。 軽妙な語り口で、Lisp 言語の重要な概念を次々に紹介していく。 著者は、NTT 武蔵野研ハッカーの主、竹内郁雄さんであるからして、 これだけで、この本を買って読まなければならない。