这本书伴随着我自学编程开始,大概半年时间左右,反反复复,一直没有完整的阅读下来。直到上个暑假,我大概花了大半个月的时间,终于把它从头到尾完整的刷了一遍。
同一本书,在不同的时间段,给我的感悟,确实是有很大不同的。
一开始读这本书,是在知乎上看到有很多人安利SICP这本书。无奈完SICP第一张之后,第二章数据抽象实在是进行不下去了。偶然间,在豆瓣上看到了很多人推荐新人读读这本书,为SICP打基础,因而转战此书。当时看的是网上的第二版。作为一个从0开始,被SICP虐的不要不要的萌新,确实感觉比SICP容易很多,但是当时觉得这本书“过于简单”,于是看完第一章不到,遍匆匆放弃了。
后来,在我接触了很多其他语言(js,c,c++,ruby,python,assembly)的过程中,几次觉得需要增强自己的编程“内力”,再一次想转战此书。但读一读,还是没什么太大的感觉,于是每次捡起它,都看不了多少,就又放下了。
这次,旁听了一学期本校计算机专业各种下半学期的课程与实验之后,深感自己编程能力不足。因此下定决心,一定要在假期尽可能的提升自己的“内力”,于是在学校图书馆找到了这本书的第一版。
以我现在的理解来看,这本书想做的,是教授你 : 程序员思维方式。 比如:抽象(如何把问题抽象等等),如何有条理的去思考问题,明确问题等等。
实际上,任何一本有关于编程的书籍,肯定都会包含这方面的内容。但是很少有像scheme这样的语言,能让花更多的时间在思考实际问题,而不是拘泥于语法以及如何用语言表述这个问题。并且又很少有像HTDP这样,难度适宜,讲解与习题循序渐进的书籍。
但是我仍然不推荐自学的萌新一开始就读这本书。原因如下:
1.书太厚了,初学者很难坚持将其看完。比起a-byte-of-python这样不到160页的入门书籍,显然初学者更有可能完整的看完后者,并进行进一步的练习。
2.对于时间不充裕的人来说,比如:很多自学的萌新都是其他专业想转行做程序员。学这本书的好处,不会立竿见影,并且绝大多数情况下,你是不会用scheme去参与工作中的。不如去熟悉其他的,将来工作要用到语言,能够尽快的找到工作实践。
3.对于那些有充分时间学习的初学者来说,由于CS相关的大部分经典教材里面的代码主要都是C写的,学完此书,肯定还要继续再学习C。不如先学习C语言,然后读读有关C的数据结构与算法,操作系统等等的书籍之后,再回头看看这本HTDP。我觉得,只有有了一定编程经验的人,才好理解作者的良苦用心吧。
读的比较仓促,习题与练习的章节只完成了部分。寒假找机会再品味一番。在此与各位自学的同志们共勉。
mark一下书的地址:http://www.htdp.org/