いかなる大きなプログラムでも、それは人間の手によって書かれた小さなプログラムから成り立っており、それらの各部分をよく理解しておけば理解可能であるということだ。逆にいえば、部品となるプログラムを理解しさえすれば、それらを組み合わせて正しく動作する大きなプログラムを作れるわけだ。物理学でいえば素粒子論のような還元主義的な考えであり、ある意味ではオーソドックスな工学の考え方である。
本書は、MITで長い間行われている講義をもとにした教科書である。著者のジェラルド・ジェイ・サスマンは本書でも使われているSchemeの設計者(現在サン・マイクロシステムズにいるガイ・L.スティール・ジュニアと共に設計・実装を行った)であり、ハロルド・エイブルソンはLogoを使った教育的な著書でも有名な著名である。いずれも人工知能研究所に所属してる純粋のハッカーである。彼らの文書を洗練したり読みやすくするのに力を貸したのが、ジェラルド・ジェイ・サスマンの妻のジュリー・サスマンである。
本書では、プログラミング言語の制限に依存することなく、プログラミングというのはどういう行為であり、プログラムをどのように構成していけばいいかということの本質を描き出している。Scheme言語についての予備知識は必要でなく、簡単な例を実行していくことで自然に学ぶことができる。基本的な数値計算から説明が始まり、抽象化の技法と構造化プログラミング、ラムダ計算と関数型プログラミング、オブジェクト指向プログラミング、人工知能や論理プログラミングなど、およそ必要なソフトウェア工学の基本が明確に解説されており、おしまいにはCPUの設計までを扱っている。このよう内容が次のような目次立てで扱われている。
Schemeは関数型言語の利点として、手続きもデータ区別せずに扱うことができる。そのため、それらを抽象的なオブジェクトとして、あるいは大きなプログラムの部品として組み合わせていくことが容易である。そのための本書のような教科書にはうってつけのプログラミング言語であるわけだ。
日本の教育は、詰め込み式で記憶力に重点が置かれているが、本書のような普遍的な考え方を学ぶチャンスが少ない。日本の情報科学系の大学や専門学校では、プログラミング言語のユーザーしか育てないようなことを行っているところも多いと聞く。ぜひ本書を基礎教育のなかで利用すべきである。本書は単なるコンピュータの教科書ではない、自然科学・工学を学ぶすべての学生が読むべき教養書といえる。
なお、翻訳は、日本のハッカーとして著名な東京大学名誉教授の和田英一によって訳されている『計算機プログラムの構造と解釈』である。(村藤一雅)