lisp 方言sechme聖經 -- SICP

計算機程序的構造和解釋

維基百科,自由的百科全書
(重定向自SICP
跳轉到: 導航,搜索
第一版封面
第二版封面

計算機程序的構造和解釋》(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 自身於第二版也試圖補充了一些讓學習曲線更平滑的材料。第一屆的圖靈獎得主 Alan J. Perlis 甚至在序文爲此辯白:

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]

此外本書的讀者羣 - 包含教師學生與各界社會人士 - 給了本書十分兩極化的評價,但不論好壞都非常有道理。所有改進或取代本書的動機都來自對本書的愛與恨。其中 Peter Norvig 的讀後感:〈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。

參考與註解

  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]

關聯條目


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章