这本书名中文名字叫什么呢,有本《具体数学》,那么这本书“具体抽象”,矛盾了。副标题是 An Introduction to Computer Science Using Scheme。可以看出这是本引论性质的计算机理论书籍。《冒号课堂》里面说过,编程中最重要的能力是抽象的能力,这本书也在培养这么一种能力,并且能代 码实现去辅助说明。这本书是美国一个大学用的一本教材 (具体哪个忘记了,可以到书的主页上去看看),貌似很多大学都使用 scheme 作为第一门程序设计语 言,历史悠久,属于 Lisp 变种。像这种函数式语言虽然效率不是很高,但是语法简单,而且功能强大,支持多种程序设计方法。在这里程序就是数据,数据就是 程序,在 sicp 中一段不长的 scheme 代码就能成为一个 scheme 解释器。Scheme 很简单,和下棋一样,人们能很快就学会其语法,这里有个很好 的教程t-y-scheme。貌似以前美国很多大学都是用这个作为第一门程序设计语言来教学,现在用 Python 的更多了,函数式语言还是在渐渐被遗忘。作为引论性质的课程,广度和高 度都达到一定程度,甚至让学生站了语言设计者的角度去思考问题。其中的主线是:过程抽象,数据抽象,和状态抽象。内容涉及:递归和推导,迭代,高阶函数,数据结构,泛型操作,实现程序设计语言,动态规划,面向对象范型等等。
SICP 包含这些内容,并且思想上更深入。所以先大概看看这本书对于阅读 SICP(《计算机程序的构造和解释》) 有很大的帮助。
大学的时候看到第五章,做了其中大部分习题,有些题目很有启发。我大四的时候做的 1~5 章的练习题。在这里下载。不保证所有的解法都是正确并最好的,网上这本书的相关资料比较少,而 SICP 的解答到是有比较多可以参考。