本書を一言で表現すれば、これ1冊でコンピュータのすべてがわかる本である。最近の自然科学や工学では、簡単な規則から予測できない現象を研究する複雑系がはやっている。本書は、そのような思想とはある意味で対立する哲学で書かれている。 いかなる大きなプログラムでも、それは人間の手によって書かれた小さなプログラムから成り立っており、それらの各部分をよく理解しておけば理解可能であるということだ。逆にいえば、部品となるプログラムを理解しさえすれば、それらを組み合わせて正しく動作する大きなプログラムを作れるわけだ。物理学でいえば素粒子論のような還元主義的な考えであり、ある意味ではオーソドックスな工学の考え方である。
本書は、MITで長い間行われている講義をもとにした教科書である。著者のジェラルド・ジェイ・サスマンは本書でも使われているSchemeの設計者(現在サン・マイクロシステムズにいるガイ・L.スティール・ジュニアと共に設計・実装を行った)であり、ハロルド・エイブルソンはLogoを使った教育的な著書でも有名な著名である。いずれも人工知能研究所に所属してる純粋のハッカーである。彼らの文書を洗練したり読みやすくするのに力を貸したのが、ジェラルド・ジェイ・サスマンの妻のジュリー・サスマンである。
本書では、プログラミング言語の制限に依存することなく、プログラミングというのはどういう行為であり、プログラムをどのように構成していけばいいかということの本質を描き出している。Scheme言語についての予備知識は必要でなく、簡単な例を実行していくことで自然に学ぶことができる。基本的な数値計算から説明が始まり、抽象化の技法と構造化プログラミング、ラムダ計算と関数型プログラミング、オブジェクト指向プログラミング、人工知能や論理プログラミングなど、およそ必要なソフトウェア工学の基本が明確に解説されており、おしまいにはCPUの設計までを扱っている。このよう内容が次のような目次立てで扱われている。
- Building Abstractions with Procedures
- Building Abstractions with Data
- Modularity, Objects, and State
- Metalinguistic Abstraction
- Computing with Register Machines
本書で使われているのは、関数型言語Lispの方言であるSchemeである。Schemeは言語仕様が小さくて効率的で、インタープリターであるのでプログラムをすぐに実行できる、必要にして十分な機能を持っている理想的で洗練されたプログラミング言語だ。 Schemeは関数型言語の利点として、手続きもデータ区別せずに扱うことができる。そのため、それらを抽象的なオブジェクトとして、あるいは大きなプログラムの部品として組み合わせていくことが容易である。そのための本書のような教科書にはうってつけのプログラミング言語であるわけだ。
日本の教育は、詰め込み式で記憶力に重点が置かれているが、本書のような普遍的な考え方を学ぶチャンスが少ない。日本の情報科学系の大学や専門学校では、プログラミング言語のユーザーしか育てないようなことを行っているところも多いと聞く。ぜひ本書を基礎教育のなかで利用すべきである。本書は単なるコンピュータの教科書ではない、自然科学・工学を学ぶすべての学生が読むべき教養書といえる。
なお、翻訳は、日本のハッカーとして著名な東京大学名誉教授の和田英一によって訳されている『計算機プログラムの構造と解釈』である。(村藤一雅)
カスタマーレビュー 
内容最高。翻訳最低。
(2008-07-13)
内容は文句なしに最高です。
とにかく考えながら読むのが楽しい本です。
PCにSchemeの処理系を入れてポチポチやりながらやってもいいと思いますし、
紙と鉛筆で、手でやってみても面白いと思います。
ですが、翻訳が最低です。
訳が良くない本とかはありますが、これは問題外です。
こんな翻訳がまかり通っているとは。
誰か、別の人に訳して欲しいところです。
本当は良い本のはずなのに、翻訳の悪さが一気に価値を下げています。
食わず嫌いでした。
(2008-05-01)
LispもSchemeも食わず嫌いでした。
本書のように、コンピュータ、プログラムの仕組みを親切に教えてくれるものをもっと早く知っていればそうならずに済んだかもしれないと悔やんでいます。
計算機、プログラムの構造で、何が美しいか、何が美しくないかの評価ができるようになりたいと思い読んでいます。
プログラマにとって必読の本です
(2007-12-10)
「これ1冊でコンピュータのすべてがわかる本」ではありませんが、プログラマにとって必読の本です。この本で言う解釈(Interpretation)を理解すればプログラマにとって新たな道が開けるでしょう。scheme の言語解説に始まり、scheme 上で新たな言語を生成し、インタプリターを生成し、最終的にはコンパイラまで作ります。gcc コンパイラが lisp を採用している(?)意味がわかります。
この類いの本は他にありません。
日本語をよく読めば原文の意味もわかります。訳文(の評価)に惑わされずに上を目指すプログラマなら是非読むことをお勧めします。
この第2版の日本語訳は大変よくない
(2005-11-30)
まず、原著は(とても)よい本に違いないということには異議無し。
日本語訳について:この本(第2版、和田訳)は、他の多くの方が言っていますように、とてもひどいです。前書き、本文の最初の十数頁を真剣に読んでみてください。ストレスがたまります。多くの箇所で「英語ではなんてかいてあるんだろう?」と考えこむことになると思います。
なお、原著の第1版の日本語訳が存在します:元吉文男訳、マグロウヒル(1989)。こちらは、私は見たことがないのですが、もしかしたら訳文は問題ない(良い)のかもしれません(信頼できる人が推薦していましたから)。残念ながら出版社が倒産してしまい、今は古本以外入手不可能ですが。
洋書で読みましょう
(2005-06-20)
講義の教科書として疑いも無く購入しましたが、せめて前書きだけでも読んでから買うべきだったと反省しています。他の方のレビューでも同様のコメントが書いてありましたが、序文の段階で既に日本語が理解出来ない部分が多数……一昔前の安物の翻訳ソフトに任せたのではないかと疑ってしまうほどの訳文の独創性にはもう天晴れです。それでも邦訳版を読むのだと言う方は、取り敢えず買う前に序文だけでも読んでから判断しましょう。
調べてみると、MITでWEBにも公開しているようですので、そちらを参照するのも良いかも知れませんが、使い勝手が悪いので個人的には洋書で購入するのが一番かと思います。邦訳は脅威的ですが、内容自体は高級な内容を扱っており、Schemeを中心に計算機によるプログラムの醍醐味を十分収録してあります。と言っても、自分自身全て細かく読んだ訳ではないのですが、教科書的に最初から徐々に読み進めていくよりは、自分の参照したい箇所を見つけてざっと概観を掴んだ後は辞書的に、あるいはプログラムのテクニックを磨く為に参照するのがお勧めです。実際相当分厚い本で、更に収録内容も非常に多いです。それでも私は最初から全て読むのだと言うのであれば、それこそ洋書版を読むことをお勧めします。