Structure_and_Interpretation_of_Computer_Programs

《**電腦程式的構造和解釋**》（英語：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.
> 
> 

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

> 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.
> 
> 

> This is the first introductory book I would strongly recommend to anyone who wants to learn how to construct computer programs . . . if you are looking for a book to thrust into the hands of someone who wants to be initiated into the power and pleasures of programming, this book is the best I have seen yet.
> 
> 

> My only problem with this book is the fact that it is far too fascinating for a first course in computing. I tried to browse it, but I was immediately sucked into reading every wonderful word. Be warned: don't open a copy of this book until you are ready for a programming feast.
> 
> 

## 各語言版本

### 原文版

原文版不論第一版或第二版，由於 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 相關的同人創作。

## 參考與註解

## 關聯條目

* Lisp
* Scheme
* 函式程式語言
* 程式語言
* 電腦科學

## 外部連結

* SICP 官方網站（英文）（含全書內容）
* Structure and Interpretation of Computer Programs — JavaScript Adaptation. [2020-10-09]. （原始內容存檔於 2021-01-18）.  Martin Henz and Tobias Wrigstad. SICP JavaScript 描述. [2020-10-09]. （原始內容存檔於 2020-10-13）.  譯者：飛龍.
* SICP in Python － CS61A: Online Textbook. [2020-10-09]. （原始內容存檔於 2020-05-30）.  John Denero. SICP Python 描述 中文版. [2020-10-09]. （原始內容存檔於 2020-04-21）.  譯者：飛龍.