8:读了老谭的书,总觉得谭浩强是一个很少自己编写程序的老学究,四平八稳、中规中矩。他的书里面没有经验建议,也没有自己独到的见解,只有完全正确的规范。合适当工具书(但说起C语言工具书又有哪本书敢和K&R的《The C Programming Language 》争锋)。而国外的很多C语言书是由C语言创始者或拥有几十年经验的质深程序员编写的。这些书里更重要的是融入了作者多年的编程经验。使用了多年的C语言后,随手翻翻这些书,时常会对作者独到见解拍案叫绝、深受启发。但是看谭浩强的书,总是觉得乏味枯燥——典型的中国教材。 举一两个简单的例子: 1.运算符优先级问题 谭浩强的书只是在附录中将ANSI C里有关运算符优先级的规范抄了一遍,区区两页。当然这样最稳妥,最不会出错。 在《Pointers On C》中作者不仅详细解释了运算优先级,还分析了C语言规范中定义不清的地方,也就是告诉读者C语言中哪里存在陷阱。此外还对在各种编译器中的运算结果进行比较。可以看出作者颇费了些心思。 而在另一本书——《实用C语言编程》/《Practical C rogramming》中作者建议道:你只需要记住乘除的优先级高于加减,其它地方一律加上括号。我经历过几次对着运算符优先级表帮别人查软件BUG以后,就把这句话作为编程原则发给每个新来的人。 2.编程风格 谭浩强的书从不涉及编程风格,可能是因为C语言规范中没有这方面的规定,也可能他自己就没意识到编程风格的重要性。 而在很多入门级的编程书中常常都会单辟一章详细介绍编程风格,因为良好的编程习惯要从一开始培养。养成好习惯很难,坏习惯一学就会。 我们对刚到公司的大学毕业生做的最多的培训就是编程风格培训。因为他们常常对缩进式风格、匈牙利命名法、注释的重要性等等都一无所知。但即使这样常常也达不到效果,因为这些学生早就在学校里养成了只要能实现功能,其他都无所谓的习惯。这应该算谁的责任? 我不是说谭浩强的书不好,只是觉得国内大学里的这帮教授的实践经验太少。所以写出来的书同国外的经典书籍比起来整整差了一个档次。当然这些在刚刚接触C语言时是感觉不到的。但过了多年后才发觉以前走了不少的弯路,自己花了几年总结的经验教训,实际上在很多国外的优秀书籍里早就有了。
#include 〈stdio.h〉int main() { int a, b, c, sum; a = 123; b = 456;sum = a + b; printf(“sum is %d\n”,sum);return 0; }#include〈stdio.h〉float add(float, float);int main() { float add(); float a, b, c; scanf("%f,%f", &a, &b); c = add(a,b); printf("sum is %f",c);return 0;