谭浩强老师的《C程序设计》据说已经累计发行超过1000万册,然而网上的批评和质疑之声却似乎跟这个销量数字很不相称。很多人认为谭老师的书错漏百出,害人无数。甚至有人认为谭根本就不懂编程,各种质疑和贬损之声更是不绝于耳。
最近逛知乎,看到一篇文章,我先不负责任的转载了,然后再表表我的看法。
------------------------------------------------------------------------------------------------------------------
原文作者:林建入 (文章著作权归作者所有)
链接:https://www.zhihu.com/question/22793863/answer/23057371
一些同学学不好C语言,把罪责归于“因为教材是谭浩强写的”实在是很滑稽。
谭浩强老先生 1934 年生,现在已经 80 岁了。他 1958 年从清华大学自动控制系毕业,那年 24 岁。要知道 C 语言那时候都还没诞生,计算机都是大型机,原始又笨重,当时谭浩强学自动化控制这一专业可以说是比较尖端的。光从这一点上,就可以说,他是同时代人里非常非常聪明的那一类人。
现在许多人批评谭浩强的《C 程序设计》的一个重要理由是“不符合C99标准”。但我们要知道 Dennis M. Ritchie 在 1972 年才推出 C 语言的第一个版本(当时谭浩强 38 岁),那时的 C 语言并不成熟。事实上 C 语言的第一次标准化一直到 1989 年才完成(俗称C89),请注意那时候谭浩强已经 55 岁了!
55 岁,你退休了没?
而更重要的是,1989 年那个时候,互联网的发展即使是在全球来看,也是非常非常初级的,更别说国内。因此信息获取的渠道极其狭窄。举个例子大家就能明白,我们现在浏览网页所用的万维网协议,就是在 1989 年那一年,由当时在欧洲粒子物理实验室的Tim Berners-Lee和他的同事一起发明的。
也就是说,一直到谭浩强 55 岁退休的时候,C 语言才刚刚完成了第一版本的标准化,而整个世界的互联网甚至还不支持通过浏览器来浏览!
时间再往后十年,到了 1999 年的时候,C99 标准终于问世。但因为这一标准比较新,大部分编译器还不能支持其中的许多特性。因此大部分沿用的还是 C89 的特性。在这样的背景下,第二年,谭浩强的《C 程序设计》出版了,而这一年,谭浩强已经 66 岁了。
抛开谭浩强 66 岁依然写作这一点不谈,若是站在当时的背景下来看待,事实上这本书也还是可读,可学,有价值的。但软件行业发展飞快,现在高校若继续沿用这一教材,就不合时宜了。
谭浩强的《C 程序设计》这本教材好不好?现在的观点来看当然不好。现在想学习 C 语言的人,不推荐采用他的书。但这主要是因为软件行业发展快速,他的书籍内容较老导致的。我们可以就书论书,但有些不明就里的同学从书出发指责谭浩强“不懂编程,水平低”等等,就是不对的了。
------------------------------------------------------------------------------------------------------------------
下面是我的一些评论和观点。
首先,1)谭老师的书确实错漏较多,主要的“错漏”在于对C99的标准满足的很不好(有很多网帖专门辑录了这本书里的错误,无需我在这详表)。2)由于谭老师写书的那个年代还没有(或者可能还没有)面向对象或者软件工程之类的概念,所以他的书基本上连变量命名规则都很受诟病。
况且,现在资讯这么发达,知识的门槛在现代科技的力量下已经一降再降。各种外版书,内版书层出不穷,读者的选择多了,就连可选的精华也多了。如果说他的书还在售卖,我个人认为这只能说是出版社为了赚钱而做出的不负责任的行为。在市场经济中,也很正常。毕竟“天下熙熙皆为利来,天下攘攘皆为利往”。
从以上角度来看,谭老的书确实该退出历史舞台了,广大读者们也不要再去看他的书了。
其次,网络上那些对谭老师的贬损之词我确实是不能认同的。这一点我基本认同林建入的看法。我们应该把问题放在特定的历史背景和环境下去看待。如果把时间往回推个近30年,我们绝对不应该抹杀谭老师工作的难能可贵与其卓越的贡献。下面这段话同样引用了知乎上的网友(牟旭东)留言:
VIEWER DISCRETION IS ADVISED !!!