一本经不起推敲的书
2011-09-05
转载:http://www.verycd.com/topics/2903411/
11楼。
书的作者勇气可嘉,值得赞扬。
但,这是一本经不起推敲的书,书中充满了对VC6特定编译器下某些特定知识点的见解,而缺乏ANSI C或者ISO标准的规范举例或解释。
该书的作者对C语言缺乏一个起码的认知,那就是:只要是标准没有规定的技术点,那么,则该技术点就是未定义的。
我的直觉是,作者在很多情况下,仅以VC6测试他的描述,甚至连GCC都没有进行测试(例子见书第35页,1.16.1一节后面"此问题的说明"部分);全书应该是在没有查询ANSI C(或ISO等)标准的情况下所著,所以,按作者鼓励写可移植代码的观点来说,此书就是:错误百出,误人子弟。
有人可能认为我没有购买此书,属乱喷一气之人;恰恰相反,我是购买了纸版书的。书到手后,随手翻了翻,翻到第12页1.6节,关于signed 和 unsigned关键字的那段,立马看到一处错误:"8位的char类型数,其值表示的范围为0~(2^8 - 1)",试问,真是这个范围吗?(这个错误在电子版和纸版中均有,而且我目前还没有看到有人提出来;如有看到,请不吝赐教)。这里仅举一小例而已。
在该书远未出版之前就建立的http://blog.csdn.net/dissection_c的博客中,作者对于很多网友已经之处的错误居然在后来印刷的纸版书中依然出现。因此,我们有理由怀疑:(1)作者对购买此书的读者是否负责;(2)对阅读了此书的C语言程序员(或C爱好者等)是否负责。错误本不可避免,但在已经有人告知的情况下,居然任错误继续肆意妄为,那就是作者的责任心问题了。
总之,我认为作者所说的:"以含金量勇敢挑战国内外同类书籍!"的目的难以达到;甚至批评那几本C语言经典书籍"有着各自的不足之处",但却看不到自己书籍的不足之处。简言之,那几本C经典书目都经受住了时间的考验,而您的书,我实在难以看到这点。
最后要提的是:拷贝其他书籍的痕迹处处可见。