写在前面
《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs,简记为SICP)是MIT的基础课教材,出版后引起计算机教育界的广泛关注,对推动全世界大学计算机科学技术教育的发展和成熟产生了很大影响。这本书的第1版于1984年出版,第2版于1996年出版,至今已被全世界100多所大学采用为教材,其中包括斯坦福大学、普林斯顿大学、牛津大学等。
在计算机科学的世界中,有一本书以其深邃的思考和前瞻性的教育理念,独树一帜,它就是《计算机程序的构造和解释》(简称SICP)。自1984年首版问世以来,这本书就一直在计算机教育界激起层层涟漪。从斯坦福到普林斯顿,从牛津到全球百余所顶尖学府,它都被奉为圭臬,成为无数计算机科学专业的核心教材。
机械工业出版社早在2004年便将这部巨著引进中国,让国内的读者也能一窥其堂奥。时光荏苒,近二十年过去了,但SICP的魅力丝毫不减,依然吸引着那些对计算机科学充满热情的学子和工作者。
内容
与许多计算机科学领域的入门教材不同,SICP的最主要关注点并不在基础语言中各种编程结构的形式和意义,也没有深入讨论巧妙或深刻的算法。与众不同地,一方面,SICP注目于帮助读者理解基于计算的观点看世界、看问题的重要性,掌握相关的基本概念和观点,建立基于计算思考问题的习惯,也就是今天人们常说的计算思维。另一方面,SICP也深入讨论了通过计算的方式处理和解决问题时必须掌握的主要技术与方法,最重要的就是分解问题和组织计算,以及建立和使用抽象的各种技术与方法。
SICP的章节目录清晰地反映了作者的基本想法:
第1、2两章分别讨论函数(或过程)抽象和数据抽象的作用,它们的建立和使用;
第3章讨论抽象数据对象本身的状态和变化,相关的模块化的问题及其在计算实践中的重要性;
第4章讨论元语言抽象,也就是设计和实现面向应用的新语言的问题;
第5章可以看作前面讨论的应用,而应用的对象问题就是JavaScript语言在寄存器机器上的实现。这里的寄存器机器是现代计算机的抽象模型,这里的讨论也说明了抽象的高级语言如何落地。
这本书到底有何魔力?
首先,SICP不满足于传授基础的编程结构和算法。它站在一个更高的视角,引导读者用计算的观点来看待世界和问题。这种计算思维,如今已成为人们解决问题的一种重要方式。SICP教会我们如何分解问题,如何组织计算,如何建立和使用抽象。这些技能和方法,无论对于学术研究还是实际工作,都具有指导意义。
其次,SICP的章节安排极具匠心。从函数和数据抽象的基础讨论,到抽象数据对象的状态和变化,再到元语言抽象的高级话题,每一章都层层递进,带领读者逐步深入计算机科学的殿堂。而最后一章以JavaScript语言在寄存器机器上的实现为例,更是将抽象的高级语言与具体的计算机模型相结合,让读者看到理论与实践的完美结合。
现在,我们迎来了一个全新的改编本——SCIP JS。这个版本将原书中的Scheme语言替换为更为流行的JavaScript语言。这样的调整,无疑会让更多的读者能够轻松地理解和接受书中的内容。虽然语言变了,但SICP的精神和宗旨依然贯穿全书。无论是原书还是改编本,它们都致力于传播计算机科学的核心思想和方法。
值得一提的是,阅读这本书并不仅仅是学习编程那么简单。它更是一次思维的训练和洗礼。读者需要通过实际的编程实践来深化对书中内容的理解。只有这样,才能真正领悟计算机科学技术的真谛。
写在最后
正如作者所言,这本书并不想作为JavaScript的入门教科书。书中对JavaScript语言的介绍远非完整,读者不应该希冀通过阅读本书学习JavaScript编程。但另一方面,由于本书的宗旨和内容,对它的学习一定会有助于读者学习JavaScript(一般而言,学习任何常见的编程语言,如Java、Python或C)。如果读者学过JavaScript(或其他编程语言),阅读这本书能帮助你更好地理解程序设计和一般的软件开发,从而有可能在这些领域中做得更出色、更高效、更得心应手。如果本书是你学习计算机科学技术的第一本书(或者学的第一门课),这段学习经历能为你今后的学习建立一个坚实的基础,帮助你更顺利地度过这段专业学习。无论如何,认真地阅读这本书,都是一件非常值得做的事情。
对于本书的学习,必须和相应的实际编程、用计算机解决问题的实践相结合。只读不做,当然不可能真正领悟计算机科学技术的真谛。另一方面,只是抄录、运行和试验书中给出代码,也不能得到其中的真传。作为这本书的真正有心的读者,你必须亲自一次次地经历使用计算机(通过编程)解决问题的实践过程。本书的作者已经为读者提供了学习所需的许多材料和资源,希望读者好好利用。
《计算机程序的构造和解释》是一本具有深远影响的计算机科学经典之作。无论你是初学者还是资深开发者,无论你关注的是理论还是实践,这本书都能给你带来深刻的启示和无尽的思考。在这个快速变化的时代,掌握计算思维和方法比单纯学习编程语言更为重要。而SICP正是这样一本能够引领你走向计算机科学巅峰的指南书。