- 計算機程序的構造和解釋(JavaScript版)
- (美)哈羅德·阿貝爾森等
- 842字
- 2024-06-06 19:10:09
1996年SICP第2版的前言
軟件可能確實與其他任何東西都不同,它的本意就是被拋棄。這一觀點的重點就是總把它看作肥皂泡嗎?
——Alan J.Perlis
自1980年以來,本書的材料就一直在MIT作為計算機科學學科入門課程的基礎。在本書第1版出版前,我們已經用這些材料教了4年課,而到這個第2版出版,時間又過去了12年。我們非常高興地看到這一工作被廣泛接受,并被結合到其他一些教材中。我們已經看到自己的學生掌握了本書中的思想和程序,并把它們作為核心構筑到新的計算機系統或語言里。這些在字面上實現了一個古猶太教法典里的雙關語:我們的學生已經變成了我們的創造者。我們非常幸運能有如此有能力的學生和如此有建樹的創造者。
在準備這一新版本的過程中,我們結合進了成百的澄清性建議,這些建議來自我們自己的教學實踐,也來自MIT和其他地方同行的評論。我們重新設計了書中的大部分主要程序設計系統,包括通用型算術系統、解釋器、寄存器機器模擬器和編譯器,也重寫了所有程序實例,以保證這些代碼可以在任何符合IEEE的Scheme標準(IEEE 1990)的Scheme實現上運行。
這個版本強調了幾個新問題,其中最重要的是各種不同技術路徑在處理計算模型中的時間問題上的中心作用。有關模型包括有狀態的對象、并發程序設計、函數式程序設計、惰性求值,以及非確定性程序設計。這里還為并發和非確定性新增了幾節,我們也設法把這方面的討論集成到整本書里,貫穿始終。
本書第1版基本上是按我們在MIT一學期課程的教學大綱撰寫的。由于有了第2版中增加的這些新材料,在一個學期里覆蓋所有內容已經不可能了,所以,教師需要從中做些選擇。在我們自己的教學中,有時會跳過有關邏輯程序設計的一節(4.4節);讓學生使用寄存器機器模擬器,但并不去討論它的實現(5.2節);對編譯器則只給出一個粗略的概述(5.5節)。即使如此,這還是一個內容很多的課程。一些教師可能希望只覆蓋前面的三章或者四章,而把其他內容留給后續課程。
MIT出版社的萬維網網站為本書使用者提供支持,其中包含了取自本書的程序、示例程序作業、支持材料,以及Lisp的Scheme方言的可下載實現。
Harold Abelson和Gerald Jay Sussman
- SPSS數據挖掘與案例分析應用實踐
- The Complete Rust Programming Reference Guide
- Google Apps Script for Beginners
- Hyper-V 2016 Best Practices
- ThinkPHP 5實戰
- 深入淺出Prometheus:原理、應用、源碼與拓展詳解
- Kali Linux Wireless Penetration Testing Beginner's Guide(Third Edition)
- 量化金融R語言高級教程
- The Complete Coding Interview Guide in Java
- SQL基礎教程(第2版)
- ASP.NET Core 2 Fundamentals
- jQuery Mobile移動應用開發實戰(第3版)
- RESTful Web Clients:基于超媒體的可復用客戶端
- Django Design Patterns and Best Practices
- Visual C++開發寶典