《計算機程序的構(gòu)造和解釋》(Structure and Interpretation of Computer Programs,簡記為SICP)是MIT的基礎(chǔ)課教材,出版后引起計算機教育界的廣泛關(guān)注,對推動全世界大學計算機科學技術(shù)教育的發(fā)展和成熟產(chǎn)生了很大影響。這本書的第1版于1984年出版,第2版于1996年出版,至今已被全世界100多所大學采用為教材,其中包括斯坦福大學、普林斯頓大學、牛津大學等。
書號: 9787111630548 書號:9787111630548 書號:9787111630548
出版時間: 2019.07.01 出版時間:2019.07.01 出版時間:2019.07.01
機械工業(yè)出版社把SICP(第2版)引進中國,于2004年出版,至今已近20年了。令人感興趣的是,SICP至今仍然受到國內(nèi)關(guān)心計算機科學技術(shù)的人們,特別是計算機專業(yè)的優(yōu)秀學生和青年計算機工作者的關(guān)注。
與許多計算機科學領(lǐng)域的入門教材不同,SICP的最主要關(guān)注點并不在基礎(chǔ)語言中各種編程結(jié)構(gòu)的形式和意義,也沒有深入討論巧妙或深刻的算法。與眾不同地,一方面,SICP注目于幫助讀者理解基于計算的觀點看世界、看問題的重要性,掌握相關(guān)的基本概念和觀點,建立基于計算思考問題的習慣,也就是今天人們常說的計算思維。另一方面,SICP也深入討論了通過計算的方式處理和解決問題時必須掌握的主要技術(shù)與方法,最重要的就是分解問題和組織計算,以及建立和使用抽象的各種技術(shù)與方法。
SICP的章節(jié)目錄清晰地反映了作者的基本想法:
第1、2兩章分別討論函數(shù)(或過程)抽象和數(shù)據(jù)抽象的作用,它們的建立和使用;
第3章討論抽象數(shù)據(jù)對象本身的狀態(tài)和變化,相關(guān)的模塊化的問題及其在計算實踐中的重要性;
第4章討論元語言抽象,也就是設計和實現(xiàn)面向應用的新語言的問題;
第5章可以看作前面討論的應用,而應用的對象問題就是JavaScript語言在寄存器機器上的實現(xiàn)。這里的寄存器機器是現(xiàn)代計算機的抽象模型,這里的討論也說明了抽象的高級語言如何落地。
讀者現(xiàn)在拿在手里的這本書是SICP的一個改編本(SCIP JS)。與SICP的不同之處,就在于這個改編本用更多計算機工作者熟悉的JavaScript語言作為討論的工具,而沒有用原SICP里使用的Scheme語言。因此,這里程序?qū)嵗男问礁咏鞣N常規(guī)的編程語言,可能更容易被更多讀者接受。本書的內(nèi)容是原SICP的翻版,作者編寫本書的基本目標是盡可能完整準確地反映原書的宗旨和精神,同時又使這些能被更多的人理解和重視。
書號: 9787111734635 書號:9787111734635 書號:9787111734635
出版時間: 2024 ? 02 ? 01 出版時間:2024-02-01 出版時間:2024?02?01
由于本書的根源和作者的意圖,本書的基本內(nèi)容和結(jié)構(gòu)都來自SICP,許多一般性的討論直接來自原書,但也有許多地方針對JavaScript做了一些調(diào)整和修改。本書比較好地反映了SICP的思想,是一本非常好的學習計算機科學技術(shù)的讀物,值得每一個關(guān)心計算機領(lǐng)域,并有心在這個領(lǐng)域中深入學習和努力工作的人士閱讀學習。
正如作者所言,這本書并不想作為JavaScript的入門教科書。書中對JavaScript語言的介紹遠非完整,讀者不應該希冀通過閱讀本書學習JavaScript編程。但另一方面,由于本書的宗旨和內(nèi)容,對它的學習一定會有助于讀者學習JavaScript(一般而言,學習任何常見的編程語言,如Java、Python或C)。如果讀者學過JavaScript(或其他編程語言),閱讀這本書能幫助你更好地理解程序設計和一般的軟件開發(fā),從而有可能在這些領(lǐng)域中做得更出色、更高效、更得心應手。如果本書是你學習計算機科學技術(shù)的第一本書(或者學的第一門課),這段學習經(jīng)歷能為你今后的學習建立一個堅實的基礎(chǔ),幫助你更順利地度過這段專業(yè)學習。無論如何,認真地閱讀這本書,都是一件非常值得做的事情。文章來源:http://www.zghlxwxcb.cn/news/detail-838852.html
對于本書的學習,必須和相應的實際編程、用計算機解決問題的實踐相結(jié)合。只讀不做,當然不可能真正領(lǐng)悟計算機科學技術(shù)的真諦。另一方面,只是抄錄、運行和試驗書中給出代碼,也不能得到其中的真?zhèn)?。作為這本書的真正有心的讀者,你必須親自一次次地經(jīng)歷使用計算機(通過編程)解決問題的實踐過程。本書的作者已經(jīng)為讀者提供了學習所需的許多材料和資源,希望讀者好好利用。文章來源地址http://www.zghlxwxcb.cn/news/detail-838852.html
適讀人群
- 計算機、電子工程及相關(guān)專業(yè)本科生
目 錄
Structure and Interpretation of Computer Programs: JavaScript Edition
譯者序
序言
1984年版《計算機程序的構(gòu)造和解釋》的原序
前言
1996年SICP第2版的前言
1984年SICP第1版的前言
致謝
1996年SICP第2版的致謝
第1章 構(gòu)造函數(shù)抽象1
1.1 程序設計的基本元素2
1.1.1 表達式3
1.1.2 命名和環(huán)境4
1.1.3 運算符組合式的求值5
1.1.4 復合函數(shù)6
1.1.5 函數(shù)應用的代換模型8
1.1.6 條件表達式和謂詞11
1.1.7 實例:用牛頓法求平方根14
1.1.8 函數(shù)作為黑箱抽象17
1.2 函數(shù)與它們產(chǎn)生的計算20
1.2.1 線性遞歸和迭代21
1.2.2 樹形遞歸24
1.2.3 增長的階28
1.2.4 求冪29
1.2.5 最大公約數(shù)31
1.2.6 實例:素數(shù)檢測33
1.3 用高階函數(shù)做抽象37
1.3.1 函數(shù)作為參數(shù)37
1.3.2 用lambda表達式構(gòu)造函數(shù)41
1.3.3 函數(shù)作為通用的方法45
1.3.4 函數(shù)作為返回值48
第2章 構(gòu)造數(shù)據(jù)抽象54
2.1 初識數(shù)據(jù)抽象56
2.1.1 實例:有理數(shù)的算術(shù)運算56
2.1.2 抽象屏障59
2.1.3 數(shù)據(jù)是什么意思?61
2.1.4 擴展練習:區(qū)間算術(shù)63
2.2 層次性數(shù)據(jù)和閉包性質(zhì)65
2.2.1 序列的表示66
2.2.2 層次結(jié)構(gòu)72
2.2.3 序列作為約定的接口76
2.2.4 實例:一個圖形語言86
2.3 符號數(shù)據(jù)96
2.3.1 字符串96
2.3.2 實例:符號求導97
2.3.3 實例:集合的表示102
2.3.4 實例:Huffman編碼樹108
2.4 抽象數(shù)據(jù)的多重表示114
2.4.1 復數(shù)的表示115
2.4.2 帶標簽數(shù)據(jù)118
2.4.3 數(shù)據(jù)導向的程序設計和可
加性121
2.5 包含通用型操作的系統(tǒng)127
2.5.1 通用型算術(shù)運算128
2.5.2 不同類型數(shù)據(jù)的組合131
2.5.3 實例:符號代數(shù)136
第3章 模塊化、對象和狀態(tài)146
3.1 賦值和局部狀態(tài)146
3.1.1 局部狀態(tài)變量147
3.1.2 引進賦值帶來的利益152
3.1.3 引進賦值的代價155
3.2 求值的環(huán)境模型159
3.2.1 求值規(guī)則160
3.2.2 簡單函數(shù)的應用163
3.2.3 框架作為局部狀態(tài)的倉庫165
3.2.4 內(nèi)部定義169
3.3 用變動數(shù)據(jù)建模172
3.3.1 可變的表結(jié)構(gòu)172
3.3.2 隊列的表示179
3.3.3 表格的表示182
3.3.4 數(shù)字電路模擬器187
3.3.5 約束傳播196
3.4 并發(fā):時間是一個本質(zhì)問題205
3.4.1 并發(fā)系統(tǒng)中時間的性質(zhì)206
3.4.2 控制并發(fā)的機制209
3.5 流218
3.5.1 流作為延遲的表219
3.5.2 無窮流225
3.5.3 流計算模式的應用230
3.5.4 流和延遲求值238
3.5.5 函數(shù)式程序的模塊化和對象
的模塊化242
第4章 元語言抽象246
4.1 元循環(huán)求值器248
4.1.1 求值器的核心部分249
4.1.2 組件的表示254
4.1.3 求值器的數(shù)據(jù)結(jié)構(gòu)263
4.1.4 把求值器作為程序運行267
4.1.5 以數(shù)據(jù)為程序270
4.1.6 內(nèi)部聲明272
4.1.7 分離語法分析與執(zhí)行275
4.2 惰性求值280
4.2.1 正則序和應用序280
4.2.2 采用惰性求值的解釋器281
4.2.3 流作為惰性的表288
4.3 非確定性計算289
4.3.1 搜索和amb291
4.3.2 非確定性程序?qū)嵗?span id="n5n3t3z" class="token number">294
4.3.3 實現(xiàn)amb求值器300
4.4 邏輯程序設計309
4.4.1 演繹式信息檢索311
4.4.2 查詢系統(tǒng)如何工作320
4.4.3 邏輯程序設計
是數(shù)理邏輯嗎?326
4.4.4 實現(xiàn)查詢系統(tǒng)330
第5章 寄存器機器里的計算350
5.1 寄存器機器的設計351
5.1.1 一種描述寄存器機器的語言352
5.1.2 機器設計的抽象355
5.1.3 子程序357
5.1.4 使用棧實現(xiàn)遞歸360
5.1.5 指令總結(jié)364
5.2 寄存器機器的模擬器365
5.2.1 機器模型366
5.2.2 匯編器369
5.2.3 指令和它們的執(zhí)行函數(shù)372
5.2.4 監(jiān)視機器執(zhí)行378
5.3 存儲分配和廢料收集380
5.3.1 把存儲器看作向量380
5.3.2 維持一種無窮存儲的假象384
5.4 顯式控制的求值器389
5.4.1 分派器和基本求值390
5.4.2 函數(shù)應用的求值393
5.4.3 塊結(jié)構(gòu)、賦值和聲明400
5.4.4 求值器的運行401
5.5 編譯405
5.5.1 編譯器的結(jié)構(gòu)407
5.5.2 組件的編譯411
5.5.3 編譯函數(shù)應用和返回語句417
5.5.4 指令序列的組合423
5.5.5 編譯代碼的實例426
5.5.6 詞法地址433
5.5.7 將編譯代碼與求值器接口435
參考文獻441
索引447
練習列表490
到了這里,關(guān)于編程界的圣經(jīng):從Scheme到JavaScript構(gòu)建你的計算思維的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!