谭浩强大师的世界纪录
张云楼
中国计算机界的第一牛人非谭浩强教授莫属,几乎无人不知无人不晓,其原因可能与他的多如牛毛的著作的封底处赫然在目的个人简介有关。其中写道,他创造了科技著作数量、读者人数和书籍发行量的3个世界纪录;还有如下评述:中国工程院长宋健称他为“教授计算技术的大师,普及现代科技之巨搫”,《计算机世界》报把他评为我国“20世纪最有影响的IT人物”10个人中的第2位,他的功绩是把千百万群众带入计算机大门。
本人是个计算机教师,教了10几年的C语言,多次使用谭教授的《C程序设计》,由第一版到第三版,封皮上印着的发行量从300万到1000万。然而十年前在教学过程中我就发现了其中大量的低级错误,不敢说我水平高,或者大师水平低。之所以说是低级错误,因为都是学生发现的。把书上的说法拿到机器实验通不过,只好认真查查,C语言的发明人怎么说的,ANSI C标准怎么说的。如此一来明白了,大师也是人,也会犯错误,不值得奇怪。奇怪的是,十年过去了,一本书又克隆成了4本,可是这些低级错误依然存在。谭教授在前言中说心中永远装着读者,处处为读者考虑,要和读者将心比心,每一句话都要反复斟酌,一个好的例子要苦苦思索好几天。真的吗?
谭教授确实是最有影响的人物,看了国内许多C语言教材,发现大多感染了谭教授的错误,所以值得一说。下面举几个例子。
1,《C程序设计》例3.3说在TurboC上32767+1没有得到32768,得到的是-32768。然后作者说“将变量b改成long型就可以得到预期结果32768了”,敢问谭教授上机试过没有,我试过了,不行。
2,《C语言程序设计》58页,《C程序设计》63页,说“变量可以作左值,…常变量不能作左值”,有常量、有变量,什么叫常变量呢?接下来在讲解了表达式“(a=3*5)=4*3”算出的a值是12之后说“赋值表达式能够作为左值”,真够经典的了,不知谭教授怎样创造出来的?
3,《C语言程序设计》103页,《C程序设计》105页,在介绍switch语句时一本正经地说:“ANSI 标准允许switch后面的“表达式”为任何类型”。为此我费了挺大力气找来了ANSI C 标准,是这样说的:“The controlling expression of a switch statement shall have integer type.”,不知谭教授真的看过ANSI标准?
这里说了3个例子,如果是错误的话,乘上100万,算不算又一个世界纪录呢?
偶而听到有人说,中国学生编程能力差,和谭教授的世界纪录有关。我不敢苟同,不过,如果说中国学生编程能力强,肯定谭教授功不可没。