《计算机程序的构造和解释》(英语:Structure and Interpretation of Computer Programs,SICP)是一本关于计算机程序设计的总体性观念的基础教科书,由麻省理工学院出版社与麦格罗希尔出版社共同出版营销。作者是麻省理工学院教授哈尔·阿伯尔森、杰拉德·杰伊·萨斯曼,此外杰拉德·杰伊·萨斯曼的妻子朱莉·苏斯曼也有参与本书的制作。封底的作者图像是由其实验室的同僚尼克·帕帕达基斯后制的合成照。
书中使用程序设计语言Lisp的方言Scheme来解释计算机科学的核心概念,包括抽象、递归、解释器以及元语言抽象。具体而微地由宏观到微观给出清楚地轮廓与脉络。
麻省理工学院最大的部门,电子工程与计算机科学系,提供的课程被编为“6系列”;而以SICP为底的课程“6.001”,直到2008年退休为止,在过去近三十年一直是“6系列”里头的招牌课程,是程序设计以及计算机科学的入门课程之一。
本书在出版印行以前,相关主题以及讲义即先行在麻省理工学院课程6.001使用。到第一版印行前,有一份给该部门教职员生的内部流通版,虽无正式印行,但麻省理工学院人工智能实验室的技术报告第735号(AITR-735)即是此份草稿。由AI及CSL合并后的CSAIL仍保存有这份文件的电子档。
自第一版面世后即有诸多名校跟进使用;并引起广大回响,许多著作因之而生。第二版于1996年出版,被它所激发的著作也在不久后陆续改版。
由于两位作者都是自由软件的支持者(而杰拉尔德·杰伊·苏斯曼更是自由软件基金会的创始元老当中,除了理查德·马修·斯托曼以外唯一一位仍持续活动的。),6.001为此而生的Scheme实现品,在自由软件基金会成立前就已经发布,基金会成立后方改名为MIT/GNU Scheme。虽然麻省理工学院人工智能实验室一直在维护MIT/GNU Scheme,但累积一代又一代聪明黑客的心力,这太过于诡异神妙精心设计的产品到最后连自家人都不能完全理解掌握,甚至在最后一期的课程由作者之一且同时回国担任课程教授的杰拉尔德·杰伊·苏斯曼宣布以较为亲切好用且同样优异强大的竞争对手DrScheme为课程正式支持版本,而非长久以来使用的MIT/GNU Scheme;这做法于向来自傲的麻省理工学院十分罕见。
另一位作者Harold Abelson积极推动的MIT OCW理所当然地放上6.001的课程讲义,试卷及参考资料。而于1986年作者们被Hewlett-Packard(惠普)聘请为其员工上课的录影,也于惠普影视部后制处理之后大方地公开。
十年就是一个世纪的计算机科学领域,6.001屹立不摇近三十年,终于在2008年于MIT功成身退,由开创本课程的教授杰拉尔德·杰伊·苏斯曼亲自划下句点。
本书被广泛地认为是计算机科学的经典教材,在计算机科学的教学领域产生了深刻的影响。诸多的经典教材都是由本书间接催化,诸如:
值得一提的是,几乎所有的派生作都直接或间接地抱怨 SICP “太难”;甚至连 SICP 自身于第二版也试图补充了一些让学习曲线更平滑的材料。第一届的图灵奖得主 艾伦·佩利 甚至在序文为此辩白:
此外本书的读者群 - 包含教师学生与各界社会人士 - 给了本书十分两极化的评价,但不论好坏都非常有道理。所有改进或取代本书的动机都来自对本书的爱与恨。其中彼德·诺米格的读后感:〈Its the Best! Its the Worst! Why the split?〉总结了造成双峰现象的各种原因并给了让人信服的统合性结论。
封底枚举了美国东北大学计算机与信息学院院长米切尔·旺德于《美国科学家杂志》的发言:
Because of its clarity, simplicity and wit, this work is highly recommended to anyone seeking an understanding of the emerging paradigms of computer science . . . the book should be read by every self-respecting computer scientist.
除了封底,书籍的官方站点也有收录部分发表于学术界知名期刊的评论 :
The book should be obligatory for anyone involved in teaching computer science at degree level: it will convince them that inside computer science there really is a true science trying to get out.
This is the first introductory book I would strongly recommend to anyone who wants to learn how to construct computer programs . . . if you are looking for a book to thrust into the hands of someone who wants to be initiated into the power and pleasures of programming, this book is the best I have seen yet.
My only problem with this book is the fact that it is far too fascinating for a first course in computing. I tried to browse it, but I was immediately sucked into reading every wonderful word. Be warned: don't open a copy of this book until you are ready for a programming feast.
原文版不论第一版或第二版,由于 MIT press 与 McGraw-Hill 的出版协议,遂为两家出版社各自成书与营销。其中 McGraw-Hill 负责北美地区教科书的订购业务,至于用于其他使用目的以及来自其他地区的教科书订购,则都交给 MIT press。随着 6.001 课程的结束,McGraw-Hill 已经停止印行,于是 SICP 原文版只能从 MIT press 订购得到。
只有翻译自原书第二版的简体中文版,由北京大学数学学院信息科学系教授裘宗燕译出,机械工业出版社出版。
第一版面世时人工智能相关研究正在没落:经费削减,研究无重大突破。本来注定与人工智能研究要一起老死于实验室的 Lisp,因为这本书不但走出实验室,更风靡新一代的学子,让这过于先进、超越时代的编程语言得以延续生命。在 SICP 出现之前,没有人认为 Lisp 可以担当讲授入门程序设计基础的教学语言。
时至今日由于硬件的高效与低价,使用真正的高级语言,如 Lisp,不再是奢侈的选择。而电脑运算平台往多核心及平行处理发展,函数编程语言的特性也能更有效地运用这类架构。正由于此书让 Lisp 飞入寻常百姓家延续生命与活力,Lisp 才能于大环境与时机成熟有机会再度火红了起来。
除了对 Lisp 的相关影响,SICP 也影响了编程语言的设计与取舍还有编程典范的发展与盛行。
此书在黑客圈有两个昵称,一个是“魔法书”,另一个叫“紫皮书”。
此外在任何 Scheme 的论坛,提到“The Bible”就是指 SICP。
在4chan上曾有人索要过一本名为 The Usual Play 的萝莉控漫画的无色情画面版本,而回复者将所有的色情画面都改为了 SICP 的内容截图,发送了一本称为 The Usual Lisp 的修改版。这本书因此成了一种模因,经常被用于“镇宅”。这也带出了不少与SICP相关的同人创作。