編輯推薦
本書1984年出版(右圖分別是第一,第二版封面),成型於美國
麻省理工學院(MIT)多年使用的一本教材,1996年修訂為第2版。在過去的二十多年裡,本書對於計算機科學的教育計畫產生了深刻的影響。
第2版中大部分重要程式設計系統都重新修改並做過測試,包括各種解釋器和編譯器。作者根據其後十餘年的教學實踐,還對其他許多細節做了相應的修改。
本書自出版以來,世界各地已有100多所院校採用本書做教材,其中包括美國史丹福大學、美國普林斯頓大學、英國
牛津大學、日本東京大學等。
圖書簡介
Harold Abelson是MIT1992年度MacVicarFacultyFellow。Gerald JaySussman是Matsushita電子工程教授。他們都在MIT電子工程和計算機科學系工作.都得到過最重要的計算機科學教育獎:如Abelson得到了IEEE計算機學會的Booth獎。Sussman得到了ACM的Karlstrom獎。Julie Sussman是作家和編輯,同時使用
自然語言和計算機語言寫作。 每一位嚴肅的計算機科學家都應該閱讀這本書。由於本書清晰、簡潔和富於才智,我們強烈推薦本書,它適合所有希望深刻理解計算機科學的人們。——Mitchell Wand
作者簡介
《美國科學家》雜誌
網友評價:
1. 涵蓋面很廣。從數據抽象、過程抽象、疊代、高階函式等編程和控制系統複雜性的思想,到數據結構和算法,到編譯器/解釋器、程式語言設計。MIT這門課的課程講義(在MIT OCW里可找到)里還增加了面向對象編程的內容。雖然很多內容涉及並不深入,但是這是MIT EECS(電子工程與計算機科學系)的第一門專業基礎課(6.001),也就是說MIT計算機專業的學生在進入大學之後,在這門課之前沒有上過其它編程、軟體、計算機方面的課程。從這個角度看,起點是非常高的。其它大學的學生在倒騰C語言的時候,MIT的學生在思考設計語言和系統。
2. 用解釋語言而不是編譯語言來闡述思想,簡化了數據類型、運行環境相關的一些細節,另外Scheme/Lisp有著極其簡練、但功能極其強大和靈活的語法,這些都使閱讀者更多地將精力集中在思想上,而不是語法細節上,頗為適合學習,只是Scheme的執行效率可能較低,表達力可能不夠”豐富“,不一定適合於實際開發。
3. MIT OCW 6.001里有幾個project,都很有意思。其中一個是設計一個類似於Google使用的web爬蟲!雖然實際上沒這么可怕,做了很多簡化,集中在樹的遍歷與索引表的建立和查詢上,但是仍然可以從中看出教授的視野和對學生的要求。
4. 現在MIT EECS已經取消了這門課,6.001的EECS介紹性功能被6.01和6.02兩門課程替代,另外新增了6.005(軟體),6.006(算法),是不是因為6.001起點太高或有點偏呢?(對於EE方向的學生來說似乎有點偏。)儘管如此,作為一門在MIT EECS教授了20多年的經典課程,仍然有其價值。
5. MIT EECS沒有專門教授C、C++、Java等程式語言的課,一般都是要求學生用很短的時間自學。比如6.004要用到C,6.005要用到Java,6.006要用的Python,教授會要求學生在課程開始的幾個星期內自學掌握這些語言。
6. SICP中譯本翻譯有些問題。比如表述符號(變數)和值的binding關係時,binding一詞應翻譯成“綁定”,而不是“約束”。
7. MIT Scheme相當難用,簡直是石器時代的開發工具:)(指編輯和解釋器,不是語言)。
8.有人說看這本書主要看第四第五章。這不是一件容易的事情,尤其對於我們這個計算機教育落後的國家。好在還有平易近人的一二三章,基本上可以在網上找全習題答案。
9.有人說scheme是程式設計語言中的皇后,更多的人從來沒見過這條恐龍。打工族翻上幾頁後的第一個感覺是,這本書到底有什麼用?如果你對數據結構算法
編譯原理模組設計足夠自信,如果你的日常工作是複製貼上字元串並且很滿意這個結果,再或者如果你是mit的電子工程學士,算啦。
10.最後有一點,全部的習題能不落下儘量做,數量很多,主要是需要很多的時間思考,收穫也不是一般的
圖書目錄
出版者的話
專家指導委員會
序
第2版前言
第1版前言
致謝
第1章 構造過程抽象
1.1 程式設計的基本元素
1.2 過程與它們所產生的計算
1.3 用高階函式做抽象
第2章 構造數據現象
2.1 數據抽象導引
2.2 層次性數據和閉包性質
2.3 符號數據
2.4 抽象數據的多重表示
2.5 帶有通用型操作的系統
第3章 模組化、對象和狀態
3.1 賦值和局部狀態
3.2 求值的環境模型
3.3 用變動數據做模擬
3.4 並發:時間是一個本質問題
3.5 流
第4章 元語言抽象
4.1 元循環求值器
4.2 Scheme的變形——惰性求值
4.3 Scheme的變形——非確定性計算
4.4 邏輯程式設計
第5章 暫存器機器里的計算
5.1 暫存器機器的設計
5.2 一個暫存器機器模擬器
5.3 存儲分配和廢料收集
5.4 顯式控制的求值器
5.5 編譯
參考文獻
練習表
索引