トップQs
タイムライン
チャット
視点
計算機プログラムの構造と解釈
ウィキペディアから
Remove ads
『計算機プログラムの構造と解釈』(けいさんきプログラムのこうぞうとかいしゃく、原題: Structure and Interpretation of Computer Programs、略称: SICP)は、1985年にMIT出版から刊行された、計算機科学分野の古典的な教科書。著者はマサチューセッツ工科大学 (MIT) の教授ハル・アベルソンとジェラルド・ジェイ・サスマン、ジュリー・サスマン。
Remove ads
表紙に魔術師が描かれているため、「魔術師本」(Wizard Book)、またはまれに表紙の色をとって「紫本」(Purple Book)と呼ばれる。計算機科学の基本原理、すなわち再帰、抽象化、モジュール、プログラミング言語の設計と実装について書かれている。
1984年に初版、1996年に第二版が出版され、1984年から2007年まで、MITの計算機科学入門講義の教科書として使用された。SICPは、特定の問題を解決するための一般的なパターンの発見と、それらのパターンを利用するソフトウェアシステムの構築に焦点を当てている[1]。2022年にはJavaScript版が出版された[2]。
第二版の和田英一による日本語訳(ISBN 978-4894711631)がピアソン桐原から2000年2月に発売された[3][4]。2013年8月にピアソン桐原が撤退し絶版になり[要出典]、和田はHTML版を公開した[5]。和田は一時MIT助教授であったため、著者の一人ジェラルド・サスマンとは知り合いである[要出典]。全体的に訳が古めかしいという不評も一部にある[要出典]。その後2014年5月に翔泳社より再版されている[6]。
Remove ads
内容
本書は計算機科学の概念を、SchemeというLISP方言を用いて説明している。また、仮想のレジスタマシンとアセンブラを使用して、LISPのインタプリタおよびコンパイラを実装している。
本書で扱われる主なトピックは以下の通りである[7]。
第1章: 手続きによる抽象の構築
- プログラムの要素
- 手続きとその生成するプロセス
- 高階手続きによる抽象
第2章: データによる抽象の構築
- データ抽象入門
- 階層データ構造と閉包性
- 記号データ
- 抽象データの多重表現
- 汎用演算のシステム
第3章: 標準部品化力、オブジェクトおよび状態
- 代入と局所状態
- 評価の環境モデル
- 可変データでのモデル化
- 並列性:時が本質的
- ストリーム
第4章: 超言語的抽象
- 超循環評価器
- Schemeの変形-遅延評価
- Schemeの変形ー非決定性アルゴリズム
- 論理型プログラミング
第5章: レジスタ計算機での計算
Remove ads
ライセンス
本書はクリエイティブ・コモンズ 表示-継承 4.0 国際 (CC BY-SA 4.0) ライセンスの下で公開されている[8]。
講義資料
本書は、MITにおける旧・初級プログラミング講義「6.001」の教科書として使用されていた[9]。この講義は1984年秋学期から始まり、最終学期となった2007年秋まで続いた[10]。他の大学でも、本書が講義の教科書として利用されていた[11]。
評価
SICPは、出版後短期間のうちに米国や世界各地の学校で最初の講義に使われるようになった[12]。MIT出版のボブ・プライアーによればSICPは最初の5年間で4万5000部売れた[12]。
『バイト』誌は1986年にSICPを「自身の職業に真に関心を持つプロフェッショナルなプログラマ」に推奨した。同誌は、本書の内容は読みやすいものではないとしながらも、熟練したプログラマに対して新旧の話題に触れる機会を提供するものであると述べている[13]。
SICPを学部生向け教科書として評価したフィリップ・ワドラーによる書評では、計算機科学の入門言語としてScheme言語の弱点が指摘された[14]。ワドラーは特に、パターンマッチングの欠如が等式推論 (equational reasoning) を不明瞭にし、証明の教育を困難にしている点、Schemeにおける代数的データ型の不在と、consペアによるコードおよびデータの表現に過度に依存している点が、初学者を混乱させると批判した。また、標準の評価戦略として遅延評価ではなく正格評価を選択している点も問題視された。
Remove ads
影響
SICPは計算機科学教育に大きな影響を与え、のちの数多くの教科書がその体裁に刺激を受けた。
- Structure and Interpretation of Classical Mechanics(通称SICM) - ジェラルド・ジェイ・サスマンによる、Schemeを使ったもう一つの教科書。
- Software Design for Flexibility
- How to Design Programs(通称HtDP) - SICPと同様のアイディアを数多く盛り込んだ、より取っ付きやすい初等的な教科書。
- Essentials of Programming Languages - プログラミング言語の講義の教科書。
- Concepts, Techniques, and Models of Computer Programming - Schemeを利用せずにインタープリタベースの学習を採用した最近の教科書。
Remove ads
関連項目
- 関数型言語
- ラムダ式は、SICPの核となる概念で[要出典]、表紙にも描かれている。
- 表紙の中で、陰陽マークに eval と apply が描かれており、その相補的な関係を暗示している。
- 『コンピュータプログラミングの概念・技法・モデル』 (CTM、CTMCP)
脚注
書籍
外部リンク
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads