計算機プログラムの構造と解釈

『計算機プログラムの構造と解釈』（けいさんきプログラムのこうぞうとかいしゃく、原題: Structure and Interpretation of Computer Programs、略称: SICP）は、1985年にMIT出版から刊行された、計算機科学分野の古典的な教科書。著者はマサチューセッツ工科大学 (MIT) の教授ハル・アベルソンとジェラルド・ジェイ・サスマン、ジュリー・サスマン。

表紙に魔術師が描かれているため、「魔術師本」（）、またはまれに表紙の色をとって「紫本」（）と呼ばれる。計算機科学の基本原理、すなわち再帰、抽象化、モジュール、プログラミング言語の設計と実装について書かれている。

1984年に初版、1996年に第二版が出版され、1984年から2007年まで、MITの計算機科学入門講義の教科書として使用された。SICPは、特定の問題を解決するための一般的なパターンの発見と、それらのパターンを利用するソフトウェアシステムの構築に焦点を当てている。2022年にはJavaScript版が出版された。

第二版の和田英一による日本語訳（ISBN 978-4894711631）がピアソン桐原から2000年2月に発売された計算機プログラムの構造と解釈　第二版 - 和書奥乃博 Introduction to Algorithms and Data Structures (SICP, 計算機プログラムの構造と解釈), 2013。、和田はHTML版を公開したhttp://sicp.iijlab.net/。。。その後2014年5月に翔泳社より再版されているhttp://www.shoeisha.co.jp/book/detail/9784798135984。

 内容 
本書は計算機科学の概念を、SchemeというLISP方言を用いて説明している。また、仮想のレジスタマシンとアセンブラを使用して、LISPのインタプリタおよびコンパイラを実装している。

本書で扱われる主なトピックは以下の通りである。

 第1章: 手続きによる抽象の構築 
 プログラムの要素
 手続きとその生成するプロセス
 高階手続きによる抽象

 第2章: データによる抽象の構築 
 データ抽象入門
 階層データ構造と閉包性
 記号データ
 抽象データの多重表現
 汎用演算のシステム

 第3章: 標準部品化力、オブジェクトおよび状態
 代入と局所状態
 評価の環境モデル
 可変データでのモデル化
 並列性：時が本質的
 ストリーム

 第4章: 超言語的抽象 
 超循環評価器
 Schemeの変形-遅延評価
 Schemeの変形ー
 論理型プログラミング

 第5章: レジスタ計算機での計算 
 レジスタ計算機の設計
 レジスタ計算機シミュレータ
 記憶の割当とごみ集め
 積極制御評価器
 翻訳系

 ライセンス 
本書はクリエイティブ・コモンズ 表示-継承 4.0 国際 (CC BY-SA 4.0) ライセンスの下で公開されている。

 講義資料 
本書は、MITにおける旧・初級プログラミング講義「6.001」の教科書として使用されていた。この講義は1984年秋学期から始まり、最終学期となった2007年秋まで続いた。他の大学でも、本書が講義の教科書として利用されていた。

 評価 
SICPは、出版後短期間のうちに米国や世界各地の学校で最初の講義に使われるようになった。MIT出版のボブ・プライアーによればSICPは最初の5年間で4万5000部売れた。

『バイト』誌は1986年にSICPを「自身の職業に真に関心を持つプロフェッショナルなプログラマ」に推奨した。同誌は、本書の内容は読みやすいものではないとしながらも、熟練したプログラマに対して新旧の話題に触れる機会を提供するものであると述べている。

SICPを学部生向け教科書として評価したによる書評では、計算機科学の入門言語としてScheme言語の弱点が指摘された。ワドラーは特に、パターンマッチングの欠如が等式推論 (equational reasoning) を不明瞭にし、証明の教育を困難にしている点、Schemeにおける代数的データ型の不在と、consペアによるコードおよびデータの表現に過度に依存している点が、初学者を混乱させると批判した。また、標準の評価戦略として遅延評価ではなく正格評価を選択している点も問題視された。

影響
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を利用せずにインタープリタベースの学習を採用した最近の教科書。

関連項目
 関数型言語
 ラムダ式は、、表紙にも描かれている。
 表紙の中で、陰陽マークに eval と apply が描かれており、その相補的な関係を暗示している。
 『コンピュータプログラミングの概念・技法・モデル』 (CTM、CTMCP)

 脚注 

書籍
 『プログラムの構造と実行』、H. エーベルソン（著）、G. J. サスマン（著）、元吉文男 (訳) 、マグロウヒル出版、1989年  上巻：ISBN 978-4895012935 下巻：ISBN 978-4895012942。本書の第一版の和訳である。
 『計算機プログラムの構造と解釈 第二版』、ジェラルド・ジェイ サスマン (著) 、ハロルド エイブルソン (著) 、ジュリー サスマン (著) 、和田英一 (訳) 、ピアソン・エデュケーション、2000年 ISBN 978-4894711631
 Structure and Interpretation of Computer Programs Second Edition, Harold Abelson, Gerald Jay Sussman, Julie Sussman, Mit Press, 1996, ISBN 978-0262510875

外部リンク
 書籍 
  原文の全文が公開されている
 SICP Web Site for the Japanese Edition 日本語訳第二版の公式サイト
 英語版HTML
 英語版PDF
 日本語版PDF

 MITでの講義 
 著者によるSICP講義のビデオ
 MIT OpenCourseWareによるYouTubeでのプレイリスト
 The MIT Open CoursewareのSICP講義（2005年）
 6.037 - Structure and Interpretation of Computer Programs 2019 - 2019年の講義

Category:Scheme
Category:プログラミング
Category:コンピュータの文献
Category:クリエイティブ・コモンズ・ライセンスの書籍
Category:1985年の書籍