電腦程式的構造和解釋

《電腦程式的構造和解釋》（Structure and Interpretation of Computer Programs，SICP）是一本關於電腦程式設計的總體性觀念的基礎教科書，由麻省理工學院出版社與麥格勞希爾共同出版行銷。本書作者是麻省理工學院教授哈爾·阿伯爾森、傑拉德·傑伊·薩斯曼，此外傑拉德·傑伊·薩斯曼的妻子朱莉·蘇斯曼也有參與本書的編纂。封底的作者圖像是由其實驗室的同僚尼克·帕帕達基斯後製的合成照。

書中使用程序設計語言Lisp的方言Scheme來解釋電腦科學的核心概念，包括抽象、遞歸、直譯器以及元語言抽象。具體而微地由宏觀到微觀給出清楚地輪廓與脈絡。

## SICP/6.001

麻省理工學院最大的部門，Electrical Engineering and Computer Science，提供的課程被編為「6系列」；而以SICP為底的課程「6.001」，直到2008年退休為止，在過去近三十年一直是「6系列」裏頭的招牌課程，是程序設計以及電腦科學的入門課程之一。

本書在出版印行以前，相關主題以及講義即先行在麻省理工學院課程6.001使用。到第一版印行前，有一份給該部門教職員生的內部流通版，雖無正式印行，但麻省理工學院人工智慧實驗室的技術報告第735號（AITR-735）即是此份草稿。由AI及CSL合併後的CSAIL仍保存有這份文件的電子檔。

自第一版面世後即有諸多名校跟進使用；並引起廣大迴響，許多著作因之而生。第二版於1996年出版，被它所激發的著作也在不久後陸續改版。

由於兩位作者都是自由軟體的支持者（而傑拉爾德·傑伊·蘇斯曼更是自由軟體基金會的創始元老當中，除了理察·馬修·斯托曼以外唯一一位仍持續活動的。），6.001為此而生的Scheme實作品，在自由軟體基金會成立前就已經釋出，基金會成立後方改名為MIT/GNU Scheme。雖然麻省理工學院人工智慧實驗室一直在維護MIT/GNU Scheme，但累積一代又一代聰明駭客的心力，這太過於詭異神妙精心設計的產品到最後連自家人都不能完全理解掌握，甚至在最後一期的課程由作者之一且同時回國擔任課程教授的傑拉爾德·傑伊·蘇斯曼宣佈以較為親切好用且同樣優異強大的競爭對手DrScheme為課程正式支援版本，而非長久以來使用的MIT/GNU Scheme；這做法於向來自傲的麻省理工學院十分罕見。

另一位作者Harold Abelson積極推動的MIT OCW理所當然地放上6.001的課程講義，試卷及參考資料。

而於1986年作者們被Hewlett-Packard（惠普）聘請為其員工上課的錄影，也於惠普影視部後製處理之後大方地公開。

十年就是一個世紀的電腦科學領域，6.001屹立不搖近三十年，終於在2008年於MIT功成身退，由開創本課程的教授傑拉爾德·傑伊·蘇斯曼親自劃下句點。

## 對大專院校電腦科學教育的影響

本書被廣泛地認為是電腦科學的經典教材，在電腦科學的教學領域產生了深刻的影響。諸多的經典教材都是由本書間接催化，諸如：

- 《經典力學的結構與解釋》，由SICP啟發，傑拉德·傑伊·薩斯曼參與的古典力學教材。（SICP激發的創作中，唯一非電腦科學領域的。）
- 《如何設計程序》，由SICP出發的改良品。有簡體中文版《程序設計方法》。DrScheme 是作者群搭配本書推出的 Scheme 教學用實作品。
- 《程序設計語言的基本要素》，以特定語言Scheme推演全書，這種寫法在程式語言結構的主題十分罕見。
- 《碎片化Lisp》，專談Scheme的編譯器與直譯器原理與製作。
- 《建議方案》，為了讓SICP更容易上手的先備書籍。SICP的部份作者也參與了本書先期的製作過程。
- 《具體抽象》，比SICP擁有更多例子並且不那麼要求讀者的數學能力。

值得一提的是，幾乎所有的衍生作都直接或間接地抱怨 SICP 「太難」；甚至連 SICP 自身於第二版也試圖補充了一些讓學習曲線更平滑的材料。第一屆的圖靈獎得主 艾倫·佩利 甚至在序文為此辯白：

Do not labor under the illusion that this is a text digestible at MIT only, peculiar to the breed found there. It is precisely what a serious book on programming Lisp must be, no matter who the student is or where it is used.

此外本書的讀者群 - 包含教師學生與各界社會人士 - 給了本書十分兩極化的評價，但不論好壞都非常有道理。所有改進或取代本書的動機都來自對本書的愛與恨。其中彼德·諾米格的讀後感：〈Its the Best! Its the Worst! Why the split?〉

總結了造成雙峰現象的各種原因並給了讓人信服的統合性結論。

## 各界評語

封底列舉了美國東北大學電腦與資訊學院院長米切爾·旺德於《美國科學家雜誌》的發言：

Because of its clarity, simplicity and wit, this work is highly recommended to anyone seeking an understanding of the emerging paradigms of computer science . . . the book should be read by every self-respecting computer scientist.｜Mitchell Wand｜American Scientist

除了封底，書籍的官方站點也有收錄部分發表於學術界知名期刊的評論：

The book should be obligatory for anyone involved in teaching computer science at degree level: it will convince them that inside computer science there really is a true science trying to get out.｜David Barron｜The Times Higher Education Supplement

## 各語言版本

### 原文版

原文版不論第一版或第二版，由於 MIT press 與 McGraw-Hill 的出版協定，遂為兩家出版社各自成書與行銷。其中 McGraw-Hill 負責北美地區教科書的訂購業務，至於用於其他使用目的以及來自其他地區的教科書訂購，則都交給 MIT press。隨著 6.001 課程的結束，McGraw-Hill 已經停止印行，於是 SICP 原文版只能從 MIT press 訂購得到。

### 日文版

- 原書第一版由元吉文男譯出，麥格羅．希爾出版。本譯本評價較高，但隨著出版社倒閉已經絕版。
- 原書第二版由號稱日本第一位駭客，時任麻省理工學院助理教授的和田英一譯出，日本培生集團出版。雖然譯者學術表現不差，但譯本謬誤甚多，本書的評價十分低落。

### 中文版

只有翻譯自原書第二版的簡體中文版，由北京大學數學學院資訊科學系教授裘宗燕譯出，機械工業出版社出版。

## 與 Lisp 的淵源

第一版面世時人工智慧相關研究正在沒落：經費削減，研究無重大突破。本來註定與人工智慧研究要一起老死於實驗室的 Lisp，因為這本書不但走出實驗室，更風靡新一代的學子，讓這過於先進、超越時代的程式語言得以延續生命。在 SICP 出現之前，沒有人認為 Lisp 可以擔當講授入門程式設計基礎的教學語言。

時至今日由於硬體的高效與低價，使用真正的高階語言，如 Lisp，不再是奢侈的選擇。而電腦運算平台往多核心及平行處理發展，函數程式語言的特性也能更有效地運用這類架構。

正由於此書讓 Lisp 飛入尋常百姓家延續生命與活力，Lisp 才能於大環境與時機成熟有機會再度火紅了起來。

除了對 Lisp 的相關影響，SICP 也影響了程式語言的設計與取捨還有編程典範的發展與盛行。

## 暱稱

此書在駭客圈有兩個暱稱，一個是「魔法書」，另一個叫「紫皮書」。

此外在任何 Scheme 的論壇，提到「The Bible」就是指 SICP。

在4chan上曾有人索要過一本名為 The Usual Play 的蘿莉控漫畫的無色情畫面版本，而回復者將所有的色情畫面都改為了 SICP 的內容截圖，發送了一本稱為 The Usual Lisp 的修改版。這本書因此成了一種模因，經常被用於「鎮宅」。這也帶出了不少與SICP相關的同人創作。

## 外部連結

- mitpress.mit.edu/sicp
- Structure and Interpretation of Computer Programs. Interactive Version
- Martin Henz and Tobias Wrigstad. 譯者：飛龍.
- John Denero. 譯者：飛龍.

## 基本資料

- 作者：哈爾·阿伯爾森，傑拉德·傑伊·薩斯曼，朱莉·蘇斯曼
- 主題：電腦、電腦程式
- 類型：教材
- 出版社：麻省理工學院出版社
- 出版時間：1985年 (第一版)；1996年 (第二版)；2022年（JavaScript版）
- 頁數：657
- ISBN：0-262-51087-1
- 國會圖書館分類法：QA76.6 .A255 1996