计算机程序的构造和解释

维基百科,自由的百科全书
跳转至: 导航搜索
第一版封面
第二版封面

计算机程序的构造和解释》(Structure and Interpretation of Computer Programs, SICP[1]是一本关于计算机程序设计的总体性观念的基礎教科书,由 MIT press 與 McGraw-Hill 共同出版行銷。作者是麻省理工学院的教授 Harold Abelson傑拉德·傑伊·薩斯曼,此外 傑拉德·傑伊·薩斯曼 的妻子 Julie Sussman 也有參與本書的製作。封底的作者圖像是由其實驗室的同僚 Nick Papadakis[2] 後製的合成照。

书中使用程序设计语言 Lisp 的方言 Scheme 来解释计算机科学的核心概念,包括抽象abstraction),递归recursion),直譯器interpreters),以及元語言抽象metalinguistic abstraction)。具體而微地由宏觀到微觀給出清楚地輪廓與脈絡。

SICP/6.001[编辑]

麻省理工学院最大的部門,电子工程与计算机科学系,提供的课程被编为「6系列」(course 6);而以 SICP 為底的課程“6.001”,直到 2008 年退休為止,在過去近三十年一直是「6系列」裏頭的招牌課程[3],是程序设计以及電腦科學的入门课程之一。

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

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

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

另一位作者 Harold Abelson 積極推動的 MIT OCW 理所當然地放上 6.001 的課程講義,試卷及參考資料。[9] 而於 1986 年作者們被 Hewlett-Packard(惠普) 聘請為其員工上課的錄影,也於惠普影視部後製處理之後大方地公開。[10]

十年就是一個世紀的電腦科學領域,6.001 屹立不搖近三十年,終於在 2008 年於 MIT 功成身退,由開創本課程的教授 Gerald Jay Sussman 親自劃下句點。[11]

對大專院校電腦科學教育的影響[编辑]

本書被广泛地认为是计算机科学的经典教材,在计算机科学的教学领域产生了深刻的影响。諸多的經典教材都是由本書間接催化,諸如:

  • Structure and Interpretation of Classical Mechanics (SICM), 由 SICP 啟發,Gerald Jay Sussman 參與的古典力學教材。(激發的創作中,唯一非電腦科學領域的。)
  • How to Design Programs (HtDP),由 SICP 出發的改良品。有簡體中文版《程序設計方法》。DrScheme 是作者群搭配本書推出的 Scheme 教學用實作品。
  • Essentials of Programming Languages (EoPL) ,以特定語言 Scheme 推演全書,這種寫法在程式語言結構的主題十分罕見。
  • Lisp in Small Pieces (LiSP),專談 Scheme 的編譯器與直譯器原理與製作。[12]
  • Simply Scheme,為了讓 SICP 更容易上手的先備書籍。SICP 的部份作者也參與了本書先期的製作過程。[13]
  • Concrete Abstractions,比 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] 總結了造成雙峰現象的各種原因並給了讓人信服的統合性結論。

各界評語[编辑]

封底列舉了美國東北大學计算机與資訊學院院長 Mitchell Wand 於《美國科學家》[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 的出版協定,SICP 遂有兩家出版社各自的成書與行銷。其中 McGraw-Hill 負責北美地區教科書的訂購業務,至於其他使用目的以及其他地區的教科書訂購,則都交給 MIT press。隨著 6.001 的結束,McGraw-Hill 已經停止印行,於是 SICP 原文版只能向 MIT press 訂購。

日文版[编辑]

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

中文版[编辑]

只有翻譯自原書第二版的簡體中文版,由北京大學數學學院信息科學系教授裘宗燕译出,机械工业出版社出版。[20]

中日文版的翻譯者[编辑]

巧合的是,中日文的第二版譯者,和田英一[21]與裘宗燕[22],皆參與了計算機領域的聖經《计算机程序设计艺术》(TAOCP)的翻譯。這種寧可冒著被萬千讀者罵破頭(TAOCP 與 SICP 都不好翻;很多譯者都被邀稿過,因為沒把握而拒絕。)也要把經典引進(L10n)的勇氣值得佩服。

與 Lisp 的淵源[编辑]

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

時至今日由於硬體的高效與低價,使用真正的高階語言,如 Lisp,不再是奢侈的選擇。而電腦運算平台往多核心及平行處理發展,函數程式語言的特性也能更有效地運用這類架構。[24] 正由於此書讓 Lisp 飛入尋常百姓家延續生命與活力,Lisp 才能於大環境與時機成熟有機會再度火紅了起來。

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

暱稱[编辑]

此书在駭客圈有兩個暱稱,一个是“魔法书”,另一个叫“紫皮书”。[25]

此外在任何 Scheme 的論壇,提到“The Bible”就是指 SICP。

4chan上曾有人索要过一本名为 The Usual Play 的萝莉控漫画的无色情画面版本,而回复者将所有的色情画面都改为了 SICP 的内容截图,发送了一本称为 The Usual Lisp 的修改版。[26][27]这本书因此成了一种模因,经常被用于“镇宅”。这也带出了不少与SICP相关的同人创作。

參考與註解[编辑]

  1. ^ 官方站点,包括书的全文。[1]
  2. ^ Nick Papadakis 於 MIT AI Lab 的主頁。[2]
  3. ^ MIT CSAIL 6.001 的課程網站。 [3]
  4. ^ AITR-735,SICP 的草稿。 [4]
  5. ^ 使用本教材的學校列表。(只列出部分。) [5]
  6. ^ MIT/GNU Scheme 的站點。 [6]
  7. ^ DrScheme 的站點。 [7]
  8. ^ 唯一一次採用 DrScheme 的 6.001,2007秋季班的課程網頁。 [8]
  9. ^ SICP/6.001 的 MIT Open Courseware 版本。 [9]
  10. ^ 作者群受 HP 聘請講授 SICP/6.001 的課程视频。可見到教授年輕時的青澀模樣;影片距今已有二十來年。 [10]
  11. ^ 6.001 的最後一堂課:〈The end of an era.〉[11]
  12. ^ LiSP 官方站點。書名是電腦界愛玩的把戲,遞歸式首字母縮略字[12]
  13. ^ Simply Scheme 第二版全文。撰書理念以及與 SICP 的淵源於序文可見。 [13]
  14. ^ 紙本停止印行,電子全文則在網路繼續讓人瀏覽。[14]
  15. ^ Alan J. Perlis 為本書寫的序。[15]
  16. ^ Peter Norvig 的讀後感:〈Its the Best! Its the Worst! Why the split?〉[16]
  17. ^ 並不是臺灣代理的《科學人》;《美國科學家》的站點。 [17]
  18. ^ 學術界人士對 SICP 的評語. [May 03, 2011]. 
  19. ^ 日文版書籍站點。 [18]
  20. ^ 《计算机程序的构造和解释(原书第2版)》於中國互動出版網。 [19]
  21. ^ 和田英一的日文版維基百科頁面;有其譯作列表。 [20]
  22. ^ 裘宗燕教授的著作和译著。 [21]
  23. ^ 英文維基百科關於這段歷史的頁面。[22]
  24. ^ 可參考《約耳談軟體:爪哇學校的危害》。也有介紹到本書以及 6.001。[23]
  25. ^ 因为书的封面上有一个魔法师;且封面為罕見的紫色。[24]
  26. ^ The Usual Lisp. 4chan BBS. 
  27. ^ Shameless request. 4chan BBS. 

關聯條目[编辑]