電腦程式的構造和解釋
此條目的語調或風格或許不適合百科全書。 (2014年8月17日) |
《電腦程式的構造和解釋》(英語:Structure and Interpretation of Computer Programs,SICP)[1]是一本關於電腦程式設計的總體性觀念的基礎教科書,由麻省理工學院出版社與麥格羅希爾出版社共同出版行銷。本書作者是麻省理工學院教授哈爾·阿伯爾森、傑拉德·傑伊·薩斯曼,此外傑拉德·傑伊·薩斯曼的妻子朱莉·蘇斯曼也有參與本書的編纂。封底的作者圖像是由其實驗室的同僚尼克·帕帕達基斯[2]後製的合成照。
電腦程式的構造和解釋 | |
---|---|
作者 | 哈爾·阿伯爾森,傑拉德·傑伊·薩斯曼,朱莉·蘇斯曼 |
類型 | 教材 |
語言 | 英語 |
主題 | 電腦、電腦程式 |
發行資訊 | |
出版機構 | 麻省理工學院出版社 |
出版時間 | 1985年 (第一版);1996年 (第二版) |
出版地點 | 美國 |
頁數 | 657 |
規範控制 | |
ISBN | 0-262-51087-1 |
OCLC | [23] |
LC分類法 | QA76.6 .A255 1996 |
書中使用程式設計語言Lisp的方言Scheme來解釋電腦科學的核心概念,包括抽象、遞迴、直譯器以及元語言抽象。具體而微地由宏觀到微觀給出清楚地輪廓與脈絡。
SICP/6.001
編輯麻省理工學院最大的部門,Electrical Engineering and Computer Science,提供的課程被編為「6系列」;而以SICP為底的課程「6.001」,直到2008年退休為止,在過去近三十年一直是「6系列」裏頭的招牌課程[3],是程式設計以及電腦科學的入門課程之一。
本書在出版印行以前,相關主題以及講義即先行在麻省理工學院課程6.001使用。到第一版印行前,有一份給該部門教職員生的內部流通版,雖無正式印行,但麻省理工學院人工智慧實驗室的技術報告第735號(AITR-735)即是此份草稿。由AI及CSL合併後的CSAIL仍儲存有這份檔案的電子檔。[4]
自第一版面世後即有諸多名校跟進使用[5];並引起廣大迴響,許多著作因之而生。第二版於1996年出版,被它所激發的著作也在不久後陸續改版。
由於兩位作者都是自由軟體的支持者(而傑拉爾德·傑伊·蘇斯曼更是自由軟體基金會的創始元老當中,除了理察·馬修·斯托曼以外唯一一位仍持續活動的。),6.001為此而生的Scheme實作品,在自由軟體基金會成立前就已經釋出,基金會成立後方改名為MIT/GNU Scheme[6]。雖然麻省理工學院人工智慧實驗室一直在維護MIT/GNU Scheme,但累積一代又一代聰明駭客的心力,這太過於詭異神妙精心設計的產品到最後連自家人都不能完全理解掌握,甚至在最後一期的課程由作者之一且同時回國擔任課程教授的傑拉爾德·傑伊·蘇斯曼宣佈以較為親切好用且同樣優異強大的競爭對手DrScheme[7]為課程正式支援版本,而非長久以來使用的MIT/GNU Scheme;這做法於向來自傲的麻省理工學院十分罕見。[8]
另一位作者Harold Abelson積極推動的MIT OCW理所當然地放上6.001的課程講義,試卷及參考資料。[9] 而於1986年作者們被Hewlett-Packard(惠普)聘請為其員工上課的錄影,也於惠普影視部後製處理之後大方地公開。[10]
十年就是一個世紀的電腦科學領域,6.001屹立不搖近三十年,終於在2008年於MIT功成身退,由開創本課程的教授傑拉爾德·傑伊·蘇斯曼親自劃下句點。[11]
對大專院校電腦科學教育的影響
編輯本書被廣泛地認為是電腦科學的經典教材,在電腦科學的教學領域產生了深刻的影響。諸多的經典教材都是由本書間接催化,諸如:
- 《經典力學的結構與解釋》,由SICP啟發,傑拉德·傑伊·薩斯曼參與的古典力學教材。(SICP激發的創作中,唯一非電腦科學領域的。)
- 《如何設計程式》,由SICP出發的改良品。有簡體中文版《程式設計方法》。DrScheme 是作者群搭配本書推出的 Scheme 教學用實作品。
- 《程式設計語言的基本要素》,以特定語言Scheme推演全書,這種寫法在程式語言結構的主題十分罕見。
- 《碎片化Lisp》,專談Scheme的編譯器與直譯器原理與製作。[12]
- 《建議方案》,為了讓SICP更容易上手的先備書籍。SICP的部份作者也參與了本書先期的製作過程。[13]
- 《具體抽象》,比SICP擁有更多例子並且不那麼要求讀者的數學能力。[14]
值得一提的是,幾乎所有的衍生作都直接或間接地抱怨 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.[15]
此外本書的讀者群 - 包含教師學生與各界社會人士 - 給了本書十分兩極化的評價,但不論好壞都非常有道理。所有改進或取代本書的動機都來自對本書的愛與恨。其中彼德·諾米格的讀後感:〈Its the Best! Its the Worst! Why the split?〉[16] 總結了造成雙峰現象的各種原因並給了讓人信服的統合性結論。
各界評語
編輯封底列舉了美國東北大學電腦與資訊學院院長米切爾·旺德於《美國科學家雜誌》[17]的發言:
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
除了封底,書籍的官方站點也有收錄部分發表於學術界知名期刊的評論[18] :
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
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.
——Kenneth D. Forbus,Artificial Intelligence, 27:1
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.
——Jon Bentley,Communications of the ACM
各語言版本
編輯原文版
編輯原文版不論第一版或第二版,由於 MIT press 與 McGraw-Hill 的出版協定,遂為兩家出版社各自成書與行銷。其中 McGraw-Hill 負責北美地區教科書的訂購業務,至於用於其他使用目的以及來自其他地區的教科書訂購,則都交給 MIT press。隨著 6.001 課程的結束,McGraw-Hill 已經停止印行,於是 SICP 原文版只能從 MIT press 訂購得到。
日文版
編輯- 原書第一版由元吉文男譯出,麥格羅.希爾出版。本譯本評價較高,但隨著出版社倒閉已經絕版。
- 原書第二版由號稱日本第一位駭客,時任麻省理工學院助理教授的和田英一譯出,日本培生集團出版。[19]雖然譯者學術表現不差,但譯本謬誤甚多,本書的評價十分低落。
中文版
編輯只有翻譯自原書第二版的簡體中文版,由北京大學數學學院資訊學系教授裘宗燕譯出,機械工業出版社出版。[20]
與 Lisp 的淵源
編輯第一版面世時人工智慧相關研究正在沒落:經費削減,研究無重大突破。[21]本來註定與人工智慧研究要一起老死於實驗室的 Lisp,因為這本書不但走出實驗室,更風靡新一代的學子,讓這過於先進、超越時代的程式語言得以延續生命。在 SICP 出現之前,沒有人認為 Lisp 可以擔當講授入門程式設計基礎的教學語言。
時至今日由於硬體的高效與低價,使用真正的高階語言,如 Lisp,不再是奢侈的選擇。而電腦運算平台往多核心及平行處理發展,函式程式語言的特性也能更有效地運用這類架構。[22] 正由於此書讓 Lisp 飛入尋常百姓家延續生命與活力,Lisp 才能於大環境與時機成熟有機會再度火紅了起來。
除了對 Lisp 的相關影響,SICP 也影響了程式語言的設計與取捨還有編程典範的發展與盛行。
暱稱
編輯此書在駭客圈有兩個暱稱,一個是「魔法書」,另一個叫「紫皮書」。[23]
此外在任何 Scheme 的論壇,提到「The Bible」就是指 SICP。
在4chan上曾有人索要過一本名為 The Usual Play 的蘿莉控漫畫的無色情畫面版本,而回覆者將所有的色情畫面都改為了 SICP 的內容截圖,傳送了一本稱為 The Usual Lisp 的修改版。[24][25]這本書因此成了一種模因,經常被用於「鎮宅」。這也帶出了不少與SICP相關的同人創作。
參考與註解
編輯- ^ 官方站點,包括書的全文。[1] (頁面存檔備份,存於網際網路檔案館)
- ^ Nick Papadakis 於 MIT AI Lab 的主頁。[2] (頁面存檔備份,存於網際網路檔案館)
- ^ MIT CSAIL 6.001的課程網站。[3] (頁面存檔備份,存於網際網路檔案館)
- ^ AITR-735,SICP的草稿。 [4][永久失效連結]
- ^ 使用本教材的學校列表。(只列出部分。) [5] (頁面存檔備份,存於網際網路檔案館)
- ^ MIT/GNU Scheme 的站點。 [6] (頁面存檔備份,存於網際網路檔案館)
- ^ DrScheme 的站點。 [7] (頁面存檔備份,存於網際網路檔案館)
- ^ 唯一一次採用DrScheme的 6.001,2007秋季班的課程網頁。 [8] (頁面存檔備份,存於網際網路檔案館)
- ^ SICP/6.001的MIT Open Courseware版本。 [9] (頁面存檔備份,存於網際網路檔案館)
- ^ 作者群受 HP 聘請講授 SICP/6.001 的課程影片。可見到教授年輕時的青澀模樣;影片距今已有二十來年。 [10] (頁面存檔備份,存於網際網路檔案館)
- ^ 6.001 的最後一堂課:〈The end of an era.〉[11] (頁面存檔備份,存於網際網路檔案館)
- ^ LiSP 官方站點。書名是電腦界愛玩的把戲,遞迴式首字母縮略字。[12] (頁面存檔備份,存於網際網路檔案館)
- ^ Simply Scheme 第二版全文。撰書理念以及與 SICP 的淵源於序文可見。 [13] (頁面存檔備份,存於網際網路檔案館)
- ^ 紙本停止印行,電子全文則在網路繼續讓人瀏覽。[14] (頁面存檔備份,存於網際網路檔案館)
- ^ Alan J. Perlis 為本書寫的序。[15] (頁面存檔備份,存於網際網路檔案館)
- ^ Peter Norvig 的讀後感:〈Its the Best! Its the Worst! Why the split?〉[16]
- ^ 並不是臺灣代理的《科學人》;《美國科學家》的站點。 [17] (頁面存檔備份,存於網際網路檔案館)
- ^ 學術界人士對 SICP 的評語. [May 3, 2011]. (原始內容存檔於2011-08-05).
- ^ 日文版書籍站點。 [18] (頁面存檔備份,存於網際網路檔案館)
- ^ 《電腦程式的構造和解釋(原書第2版)》於中國互動出版網。 [19] (頁面存檔備份,存於網際網路檔案館)
- ^ 英文維基百科關於這段歷史的頁面。[20] (頁面存檔備份,存於網際網路檔案館)
- ^ 可參考《約耳談軟體:爪哇學校的危害》。也有介紹到本書以及 6.001。[21] (頁面存檔備份,存於網際網路檔案館)
- ^ 因為書的封面上有一個魔法師;且封面為罕見的紫色。[22] (頁面存檔備份,存於網際網路檔案館)
- ^ The Usual Lisp. 4chan BBS.[永久失效連結]
- ^ Shameless request. 4chan BBS.[永久失效連結]
關聯條目
編輯外部連結
編輯- 官方網站
- Structure and Interpretation of Computer Programs. Interactive Version (頁面存檔備份,存於網際網路檔案館)
- 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). 譯者:飛龍.