計算機程序的構造和解釋(典藏版 原書第2版) | 被動收入的投資秘訣 - 2024年6月

計算機程序的構造和解釋(典藏版 原書第2版)

作者:(美)哈羅德·阿貝爾森
出版社:機械工業
出版日期:2019年07月01日
ISBN:9787111630548
語言:繁體中文

本書曾是美國麻省理工學院電腦科學專業的入門課程教材之一, 從理論上講解電腦程式的創建、 執行和研究。主要包括:構造過程抽象,構造資料抽象,模組化、 物件和狀態,元語言抽象,寄存器機器裡的計算等。


哈樂德·阿貝爾森(Harold Abelson)是MIT 1992年度MacVicar Faculty Fellow。在MIT電子工程和電腦科學系工作,得到過重要的電腦科學教育獎——IEEE電腦學會的Booth獎。

吉羅德·傑伊·薩斯曼(Gerald Jay Sussman)是Matsushita電子工程教授。在MIT電子工程和電腦科學系工作,得到過重要的電腦科學教育獎——ACM的Karlstrom獎。

朱莉·薩斯曼(Julie Sussman)是作家和編輯,同時使用自然語言和電腦語言寫作。


出版者的話

第2版前言
第1版前言
致謝

第1章 構造過程抽象1
1.1 程式設計的基本元素3
1.1.1 運算式3
1.1.2 命名和環境5
1.1.3 組合式的求值6
1.1.4 複合過程7
1.1.5 過程應用的代換模型9
1.1.6 條件運算式和謂詞11
1.1.7 實例:採用牛頓法求平方根14
1.1.8 過程作為黑箱抽象17
1.2 過程及其產生的計算20
1.2.1 線性的遞迴和反覆運算21
1.2.2 樹形遞迴24
1.2.3 增長的階28
1.2.4 求冪29
1.2.5 最大公約數32
1.2.6 實例:素數檢測33
1.3 用高階函數做抽象37
1.3.1 過程作為參數37
1.3.2 用lambda構造過程41
1.3.3 過程作為一般性的方法44
1.3.4 過程作為返回值48

第2章 構造資料抽象53
2.1 資料抽象導引55
2.1.1 實例:有理數的算數運算55
2.1.2 抽象屏障58
2.1.3 資料意味著什麼60
2.1.4 擴展練習:區間算術62
2.2 層次性資料和閉包性質65
2.2.1 序列的表示66
2.2.2 層次性結構72
2.2.3 序列作為一種約定的介面76
2.2.4 實例:一個圖形語言86
2.3 符號資料96
2.3.1 引號96
2.3.2 實例:符號求導99
2.3.3 實例:集合的表示103
2.3.4 實例:Huffman編碼樹109
2.4 抽象資料的多重表示115
2.4.1 複數的表示116
2.4.2 帶標誌資料119
2.4.3 資料導向的程式設計和可加性122
2.5 帶有通用型操作的系統128
2.5.1 通用型算數運算129
2.5.2 不同類型資料的組合132
2.5.3 實例:符號代數138

第3章 模組化、物件和狀態149
3.1 賦值和局部狀態149
3.1.1 局部狀態變數150
3.1.2 引進賦值帶來的利益154
3.1.3 引進賦值的代價157
3.2 求值的環境模型162
3.2.1 求值規則163
3.2.2 簡單過程的應用165
3.2.3 將框架看作局部狀態的展臺167
3.2.4 內部定義171
3.3 用變動資料做類比173
3.3.1 變動的表結構173
3.3.2 佇列的表示180
3.3.3 表格的表示183
3.3.4 數位電路的模擬器188
3.3.5 約束的傳播198
3.4 併發:時間是一個本質問題206
3.4.1 併發系統中時間的性質207
3.4.2 控制併發的機制210
3.5 流220
3.5.1 流作為延時的表220
3.5.2 無窮流226
3.5.3 流計算模式的使用232
3.5.4 流和延時求值241
3.5.5 函數式程式的模組化和物件的
模組化245

第4章 元語言抽象249
4.1 元迴圈求值器251
4.1.1 求值器的內核252
4.1.2 運算式的表示255
4.1.3 求值器資料結構260
4.1.4 作為程式運行求值器264
4.1.5 將資料作為程式266
4.1.6 內部定義269
4.1.7 將語法分析與執行分離273
4.2 Scheme的變形—惰性求值276
4.2.1 正則序和應用序277
4.2.2 一個採用惰性求值的解譯器278
4.2.3 將流作為惰性的表284
4.3 Scheme的變形—非確定性計算286
4.3.1 amb和搜索287
4.3.2 非確定性程式的實例290
4.3.3 實現amb求值器296
4.4 邏輯程式設計304
4.4.1 演繹資訊檢索306
4.4.2 查詢系統如何工作315
4.4.3 邏輯程式設計是數理邏輯嗎321
4.4.4 查詢系統的實現324

第5章 寄存器機器裡的計算343
5.1 寄存器機器的設計344
5.1.1 一種描述寄存器機器的語言346
5.1.2 機器設計的抽象348
5.1.3 副程式351
5.1.4 採用堆疊實現遞迴354
5.1.5 指令總結358
5.2 一個寄存器機器模擬器359
5.2.1 機器模型360
5.2.2 組合語言程式364
5.2.3 為指令生成執行過程366
5.2.4 監視機器執行372
5.3 存儲分配和廢料收集374
5.3.1 將存儲看作向量374
5.3.2 維持一種無窮存儲的假像378
5.4 顯式控制的求值器383
5.4.1 顯式控制求值器的內核384
5.4.2 序列的求值和尾遞迴388
5.4.3 條件、賦值和定義391
5.4.4 求值器的運行393
5.5 編譯397
5.5.1 編譯器的結構399
5.5.2 運算式的編譯402
5.5.3 組合式的編譯407
5.5.4 指令序列的組合412
5.5.5 編譯代碼的實例415
5.5.6 詞法地址422
5.5.7 編譯代碼與求值器的互連425
參考文獻431
練習表437
索引439


相關書籍