- 計算機程序的構造和解釋(JavaScript版)
- (美)哈羅德·阿貝爾森等
- 1587字
- 2024-06-06 19:10:08
譯者序
《計算機程序的構造和解釋》(Structure and Interpretation of Computer Programs,簡記為SICP)是MIT的基礎課教材,出版后引起計算機教育界的廣泛關注,對推動全世界大學計算機科學技術教育的發展和成熟產生了很大影響。機械工業出版社把SICP(第2版)引進中國,由我翻譯后于2004年出版,至今已近20年了[1]。令人感興趣的是,SICP至今仍然受到國內關心計算機科學技術的人們,特別是計算機專業的優秀學生和青年計算機工作者的關注。我偶爾還會收到討論這本書的郵件,出版社也在不斷重印。
與許多計算機科學領域的入門教材不同,SICP的最主要關注點并不在基礎語言中各種編程結構的形式和意義,也沒有深入討論巧妙或深刻的算法。與眾不同地,一方面,SICP注目于幫助讀者理解基于計算的觀點看世界、看問題的重要性,掌握相關的基本概念和觀點,建立基于計算思考問題的習慣,也就是今天人們常說的計算思維。另一方面,SICP也深入討論了通過計算的方式處理和解決問題時必須掌握的主要技術與方法,最重要的就是分解問題和組織計算,以及建立和使用抽象的各種技術與方法。
SICP的章節目錄清晰地反映了作者的基本想法:第1、2兩章分別討論函數(或過程)抽象和數據抽象的作用,它們的建立和使用;第3章討論抽象數據對象本身的狀態和變化,相關的模塊化的問題及其在計算實踐中的重要性;第4章討論元語言抽象,也就是設計和實現面向應用的新語言的問題;第5章可以看作前面討論的應用,而應用的對象問題就是JavaScript語言在寄存器機器上的實現。這里的寄存器機器是現代計算機的抽象模型,這里的討論也說明了抽象的高級語言如何落地。
讀者現在拿在手里的這本書是SICP的一個改編本。與SICP的不同之處,就在于這個改編本用更多計算機工作者熟悉的JavaScript語言作為討論的工具,而沒有用原SICP里使用的Scheme語言。因此,這里程序實例的形式更接近各種常規的編程語言,可能更容易被更多讀者接受。本書的內容是原SICP的翻版,作者編寫本書的基本目標是盡可能完整準確地反映原書的宗旨和精神,同時又使這些能被更多的人理解和重視。
由于本書的根源和作者的意圖,本書的基本內容和結構都來自SICP,許多一般性的討論直接來自原書,但也有許多地方針對JavaScript做了一些調整和修改。本書比較好地反映了SICP的思想,是一本非常好的學習計算機科學技術的讀物,值得每一個關心計算機領域,并有心在這個領域中深入學習和努力工作的人士閱讀學習。
正如作者所言,這本書并不想作為JavaScript的入門教科書。書中對JavaScript語言的介紹遠非完整,讀者不應該希冀通過閱讀本書學習JavaScript編程。但另一方面,由于本書的宗旨和內容,對它的學習一定會有助于讀者學習JavaScript(一般而言,學習任何常見的編程語言,如Java、Python或C)。如果讀者學過JavaScript(或其他編程語言),閱讀這本書能幫助你更好地理解程序設計和一般的軟件開發,從而有可能在這些領域中做得更出色、更高效、更得心應手。如果本書是你學習計算機科學技術的第一本書(或者學的第一門課),這段學習經歷能為你今后的學習建立一個堅實的基礎,幫助你更順利地度過這段專業學習。無論如何,認真地閱讀這本書,都是一件非常值得做的事情。
對于本書的學習,必須和相應的實際編程、用計算機解決問題的實踐相結合。只讀不做,當然不可能真正領悟計算機科學技術的真諦。另一方面,只是抄錄、運行和試驗書中給出代碼,也不能得到其中的真傳。作為這本書的真正有心的讀者,你必須親自一次次地經歷使用計算機(通過編程)解決問題的實踐過程。本書的作者已經為讀者提供了學習所需的許多材料和資源,希望讀者好好利用。
最后,非常感謝機械工業出版社引進這本很有意思,也很值得閱讀的著作。在專業領域中的一大批人都撲向人工智能、機器學習等熱門話題的今天,基礎的計算機科學技術知識和能力仍然不會過時。在這里付出的努力終將會被證明是值得的。
裘宗燕
2023年5月,于北京
[1]作者在前言中說存在一個未經授權的早期譯本。但本譯者沒有看到過,近日在國家圖書館、北大圖書館和孔夫子舊書網檢索,也都沒有發現。此事存疑。
- Designing Machine Learning Systems with Python
- Mastering AWS Lambda
- 零起步玩轉掌控板與Mind+
- C語言程序設計(第2版)
- Unity 2020 Mobile Game Development
- C#程序設計(慕課版)
- 深入淺出DPDK
- 嚴密系統設計:方法、趨勢與挑戰
- Learning Vaadin 7(Second Edition)
- Raspberry Pi Home Automation with Arduino(Second Edition)
- C++20高級編程
- 代替VBA!用Python輕松實現Excel編程
- Secret Recipes of the Python Ninja
- Visual Basic 程序設計實踐教程
- 自己動手構建編程語言:如何設計編譯器、解釋器和DSL