看到网上有很多人骂这本书,忍不住来写两句。
先说说我本人的情况:大一下学了一学期的C语言,然后直到大四下再也没用过。大四下时重学编程。先用一周扫描完此书,再用十五天扫描完《C++ Primer Plus》前九章(即讲到类之前的章节)。这就是我集中时间系统学习编程的全部经历。
首先澄清我认为一个普遍存在的误解。学编程不等于要成为程序员。我认为学编程的目的在于,自己有一个想法,设计好算法之后能用C/C++实现出来。
其次再说说我对学编程的看法。1. 谭老的这本书第二章,也就是正式讲解C语言之前,开宗明义地说明“算法是程序的灵魂”,此实乃至理名言。在正式开始学编程之前就“灌输”这一观念,绝对是必要而且正确的。2. 有很多人指责这本书反复纠结于语法、运算符的优先级等。我觉得这其实是他自己在纠结于语法与优先级。编程水平只能在实践中提高,如果自己想死记硬背这些语法优先级神马的,就怨不得别人了。随着程序编写的越来越多,语法优先级自然会变得很熟练。至于书中反复强调,我的理解是,只需要有这个意识(即优先级是很关键的)即可。3. 很多人指责书中错误无处不在。可能我读得不仔细,没注意到这一点。但是,你从中学看小学,或从大这看中学,也会发现以前的教科书上有很多讲得都是错的。如果仅仅把这本书用来入门,而不是想一口吃成一个胖子,这本书还是很适合的。学习本来就是一个循序渐进,不断发现错误,改正错误的过程。因为是用来入门,所有能写出复杂而又优秀的代码就不是目的了。我觉得学这本书的目的在于,学习编程的思维,比如说重视算法,掌握像选择、循环等几种基本的控制结构,认识到编程里经常用到的如整型、字符、数组、指针等变量类型,训练出基本的编程能力。然后就可以看其它进阶的书了。
再者,个人觉得说这本书很烂的人应该都是编程高手,或者说至少很熟练了。那么请具体地说出这本书到底哪些地方你认为不好。只是一味地骂一句,然后喷一下“谁看谁知道”,这样的评论对后来人一点作用都没有。捧经典(如《C程序设计语言》这本书,豆瓣评分9.3,我承认这本书的经典与权威,但一打开目录,开始就讲接口,管道,控制流等,试问,一个初学者,能学得进去吗?),然后黑这本书,请举出你认为适合初学者的书,然后初学者会被误导。初学者需要的只是基本的知识概念,然后加以例子说明。先跟他大段大段地讲一定要有main函数,一定要#include <stdio.h>,定义变量之后最好立马初始化等等,却迟迟不教他写Hello world,肯定会耗尽他继续学习下去的兴趣。
最后,确实有比本书更好的更适合初学者的书,如《C Primer Plus》等。