《计算机程序的结构和解释》

The banner of SICP上周一,我买了这本《计算机程序的结构和解释》。它是一本MIT的初级计算机教材,里面使用Scheme这个LISP的方言,解释了计算机科学的很多高级知识。上面的知识是中国大学计算机系的课本难以望其项背的。

最初我看到这么一本书,是在王垠的网页上。这里我要插一句,不管王垠的退学风波给他带来了怎样的影响,我认为王垠始终是一个不可或缺的技术强人。中国的计算机发展尚在初期,十分需要有这么一群人把外国的一些在国内不是那么流行的技术介绍给我们。比方说我,如果我没有偶然发现王垠的网页,我可能到现在都没听说过TeX、Scheme之类的东西。当时我从他的网页上首次得知了Scheme这门语言,在同一篇文章的相关文档这么一节里,这本SICP赫然出现在第一位。王垠对它的评价很高,于是我就想办法从网上下这本书。这本书的原版是免费的,在它的主页上可以再显浏览。可惜我家用的是拨号浏览,没法挂在线上读这本书,因此我一直也没怎么看。到了后来,我学会了用wget,这才把这本书拉了下来,慢慢阅读。无奈我的英文不是那么牛,读的又是从未接触过的计算机科学课本,因此我的阅读速度很慢。

三个星期前,我从网上得知了北大的裘宗燕教授早已把这本书翻译出来的消息,赶紧给书店打电话。被告知原先有这本书,不过卖完了。看来这本书在国内销路并不好,以至书店在卖完后竟没有再进。于是赶紧要求订一本,终于在一个星期后得到了来货的消息。

买回来后,我立刻翻阅起来。全书共有五章,但从标题上来看完全不知其云何物。从头读起,立马就发现与其它书的不同之处:完全没有废话,上来就玩真格的。 虽然匆忙接招,但始终落在了下方。

经过一个星期的阅读,我读完了第一章和第二章第一节。从我读到的内容来看,我发现这本书侧重于对数学与算法的讲解。第一章构造过程抽象,讲了一些算是基础的东西。虽说是基础,可迭代偏偏把我弄得糊里糊涂。由于LISP的一些特性,这门语言与我用过的其它语言,像Pascal、C一类的,有很大的区别。比如它没有循环语句,因此在我看来迭代便十分怪异。待到我弄明白迭代其实是用尾递归实现的,已经花了不少功夫。而且弄明白是一回事,亲身体验又成了另外一回事了。就算我理解了迭代,稍微复杂一点的迭代,让我独立的写出,就有了困难了。本来打算打好基础,把每道习题都做完。结果越做越没信心,最后不得不改变策略,先求大体浏览,以得其骨;再求每题必解,以得其血肉。

昨天,丘奇数的那道题(2.6)又让我头痛了好一阵子。哪怕看了王垠的解答也还是晕晕乎乎,信心更挫。唉,那就挨下去,且看结果如何。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据