为什么这么多人不喜欢谭浩强的C语言程序设计?


他,是谁?

谭浩强教授,我国著名计算机教育专家。


1958年毕业于清华大学自动控制系。

青年时期曾担任清华大学学生会主席、北京市学联副主席、北京市人大代表、全国文教战线先进分子。

他是我国计算机普及和高校计算机基础教育的开拓者之一。

现任全国高等院校计算机基础教育研究会荣誉会长、教育部全国计算机应用技术证书考试委员会主任委员,享受国务院政府特殊津贴。

曾获国家科技进步奖、国家级教学成果奖,被原国家科学技术委员会和中国科学技术协会表彰为“全国先进科普工作者”,被北京市人民政府评为“北京市有突出贡献的专家”。

他在CCTV讲了BASIC,FORTRAN,COBOL,Pascal,QBASIC,C,Visual Basic七种计算机语言,观众超过500万人。

谭浩强教授善于用读者容易理解的方法和语言说明复杂的概念。

许多人认为他开创了计算机书籍贴近大众的新风,为我国的计算机普及事业作出重要的贡献。

21世纪初,被《计算机世界》报组织的“世纪评选”评为“我国20世纪最有影响的十个IT人物”,被《电脑报》评为“我国十大IT人物”,他的功绩是把千百万群众带入计算机的大门。

然而,从很久以前开始,他所著的《C程序设计》就一直被吐槽不断。


这本书几乎是每个程序员必经的“童年”。

这本书已经出到了第五版。

▍那么这究竟是为什么,大家会说这本书是坑?

1、 这本书本身存在很多语法错误,主要是理解或者版本更迭没有及时更新造成,中国大学里面很多教材更迭相对偏慢。

随着计算机软件领域的飞速发展,现在这本书因为内容比较老,可能已经不太适宜做教材。

另外,这本书还是翻译过来的,语言差异加上翻译上理解的偏差,造成书中部分语法和概念确实有一定的问题。

甚至在网上,你还可以看到诸如《谭浩强<C程序设计>错误不完全汇集》的整整50页的纠正文档。(基于第四版的纠错,第五版已修复大部分)


之前嵌入式ARM曾推送过的文章《你有没有想过,C语言 main 函数到底为啥这么写?》中,许多人会错写成void main()的形式,其实就是早期谭老未更正教材的错误之一。

知乎还有人整理出了长长的错误列表……


2、 内容过于老旧,甚至有些程序内容都无法运行,当然这是编译器支持不同的C标准造成的。

这本书甚至大学许多教师的编译环境还是turbo C,这个老古董已经非常过时了,显得这本书非常的low,欠缺与时俱进。

但是此书确实更新速度比较慢,在2000年以后出的版本仍然支持的是C89标准。

3、 后期高质量的书非常多,排版也非常清晰,比如说《C Primer Plus》几乎可以取代这本书,但谭老这本书仍然还是作为大学的教材主力。

4、 有的人表示这本书难度太高了,主要是内容设计有关。开篇的内容对于刚接触C语言的人来说确实具有一定的难度,让不少人望而生畏。

其实最令我印象深刻的是:i+=(++i)+(i++)这种类型的代码。我相信你肯定见过且做过,直到现在仍有不少人为之苦恼,其实此类代码的来源就是这里。我们讲理论目的是指导实践,但是这种堆叠式地靠运算符优先级的写法真的意义不大,实际工程中代码的目标是简单易懂且有效,难道仅仅是为了考察运算优先级?

其实不仅是计算机教材,还有更多的比如线性代数教材、专业课教材、教学用到的软件,全都缺乏更新。

网友们现身说法

一位网友表示,有一位好心学长将谭先生的《C++程序设计》借给了我,这几乎直接导致了我现在还不会编程。

知乎上的人也有人现身说法:

孙涛表示,我是物理专业的,当初启蒙就是这本书。说的严重点,这本书配合一个半吊子老师几乎毁了物理系所有人对编程的信心。造成的心理阴影直到毕业才逐渐消除。当初学c语言,大家感觉奇难无比,毫无头绪,要花大量时间研究特sb的知识点,比如i++++i。那个老师是教物理实验的,对c语言没什么理解,照本宣科而已。每节c语言课我要先预习两个小时,然后再复习两个小时,勉强能把书上奇奇怪怪的“知识点”搞清楚。当时刚上大一,不知道怎么自学,也不知道有什么好教材。越不懂越去研究谭浩强的书,然后就更蒙圈,恶性循环。

曾一度怀疑自己智商有问题,后来觉得不应该啊。总之当时觉得这门课是难到天上去了,考完之后再不想碰。其实c语言比大多数物理课都简单不少。我的很多同学也是对这门课很厌恶,逃避。后来即使在物理实验中遇到需要编程处理数据的,也是能逃就逃。整个转行系(物理系)毕业后鲜有人从事编程相关,绝对和这次打击有关。到现在大家才慢慢缓过来,开始学习其他编程的东西
敖厂长有一期节目说的是雅达利出品的《外星人ET》游戏直接毁灭了美国的游戏机产业,直到微软xbox才复兴。

谭浩强c语言教材对我的打击不亚于这个。谭浩强也算是中国计算机教育的先行者了,教材错误多,过时了,也不能怪他头上。但是他在书里吹牛逼就不对了,成天发行量破几千万!各个大学也是不思进取,直到现在还在用他的教材。vc++6.0,二级考试,谭书,都可以称得上是毒瘤了

假药郎中表示,应该说有两个原因:

1. 这是本烂书。

2. 作为一本烂书,却借着谭的所谓权威名头,年复一年地祸害一代又一代的学生——这才是最令人愤怒的!

谭书中的错误已有无数人吐槽过了。我自己的一个栗子:当年跟着这本书学的#include "xxxx.c"。

说穿了就是:谭根本沒有C的实际开发经验,只知钻语法的牛角尖。而C恰恰是—门存在着很多“语法上不算错,但实际不能这么写”的语言。谭的书给初学者很多这样的误导。

谭的成名是因为当年在电视上讲的BASIC课程,在那个资料匮乏的年代,应该说谭的课程在计算机教育的启蒙普及上起到了作用。但实事求是的讲,谭当年的这些课程,也就好比一个闭塞山区里的乡村教师自己编的土教材,在没有更好的选择下聊胜于无。但随着社会的巨大进步,后来已经有更多更好的教材可用,他早该退出历史舞台。那样的话,也许他的历史形象更令人尊敬。而多年以来,他的书依然凭借行政权力倚老卖老地霸占着全国那么多的学校,大言不惭的标榜“销量千万”,这就很无耻了,让人鄙视也不为怪了。

邢志鹏表示,国内大学生的普遍思想,大学课本教材都是废物,凡是大学的教材,都是应付考试的。在这种提前下,老谭的书就不能幸免了。

其实很多人喷老谭的书都是以讹传讹,看到很多高手都喷谭浩强的书,然后自己也要鄙视一下谭浩强的书,来显得自己也是高手一样。这种人看到谁在看老谭的书就会说一句,这种垃圾书也看,哥看的都是国外的经典。下次遇到这种人,你就让他不查资料,自己直接找老谭的书上的错误,能找出多少。找不出就别喷好吗。

老谭书上类似i++++i这种代码,确实实际代码这么写不合适,但是作为初学者,这是通过这种方式教你在理解优先级,通过这种拗口的方式可以理解的更加彻底,我觉得没问题。就像小学数学课的应用题。举个例子,池子一边装水,一边放水,求水多久能装满池子。难道也要喷一下什么鬼题目,浪费水。这明明就是考的对题目的理解,又不是真让你去做个实验。一个道理。

我上大学的时候就是看这本书自学的,思想很单纯,认准了这本书,就好好学。我感觉谭浩强的书绝对适合入门,学东西最重要的难道不是入门吗,老外很多书确实经典,但是不适合入门,那就不能推荐给初学者,那样只会害了他们。很多人都是看了老谭的书,对C已经有了一个概念以后,再去看那些书显得很从容,但是如果没有一个基础直接看那些书,未必看得懂。

我相信很多喷老谭的程序员是通过谭浩强的C入了门,那就请你不要喷老谭了。更加鄙视那些通过抨击老谭抬高自己的人。在谭浩强那个年代学计算机的,都是聪明人,别的不说,想学计算机身边连本书都找不到,哪像现在各种书泛滥,网上各种教学视频。那个年代学好计算机除了要聪明,也一定要有毅力。现在的学生以为自己会写几句代码一个个都上天了,以为自己比谭浩强这种老古董要聪明不知多少,可笑!

郭靖的故事大家都知道。他的启蒙老师江南七怪,教他学会了功夫。但是真正让他成为大侠的是洪七公,后来他的功夫已经远远超过了江南七怪,但是他还是那么的尊敬他们,而没有半点瞧不起他们,因为没有江南七怪,郭靖也许就不会有后面的故事。我这个比喻也许非常不恰当,没有谭浩强一定有别的书代替。不过我依然认为初学者可以看看老谭的书,至少他适合入门,如果你觉得他的入太抽象难懂了,我只能说要么你没用心,要么就不适合编程。

Hanson表示,现在黑谭浩强的简直是比比皆是。我觉得对于他的教材应该客观的评价。(吐槽一句,现在跟风的实在太多了,别人说什么他们立马附和,黑谭浩强书的人里面也有不少这样的人,估计好多黑他的人还不知道为什么黑他。。。)

不可否认,他的C语言教材在国内用的最广。既然有那么多人用,那么它就一定有他自己的优点。

我觉得,谭浩强书最大的优点就是特别容易懂(刚看有的答主和我的看法完全相反啊。。。),我指的易懂是指看他的书能很容易的自己写出正确的程序(至于代码风格不好,至少不是错误)。我开始接触C语言是在大概初二的时候,当时我第一本书买的就是第五版谭浩强。对于我们西北的这些信息弱省来说,初中那会大部分学生还不知道编程是什么。以此为背景,他的书能让我在完全没有基础的情况下几个月里学会C语言,易懂性是值得肯定的()。

当然,他的书缺点也是很明显的。

首先(也是我觉得最主要的问题)就是不讲原理。他能很快教会你怎么去写程序,但不告诉你为什么要这么写(和他前言说的不一样啊。。。)。这种写法更适合那些非计算机专业的学生(当然主要指学渣,学霸们请忽略这条),但对于真正学C语言的同学来说,就显得不足,对后续的学习应用也可能会埋下不小的麻烦。

其次是大家吐槽较多的代码风格和小错误(个人觉得第五版里错误已经不怎么常见了,至于风格,好吧,的确不怎么样)。

再有,就是个别地方讲的有些然,没讲透。

(具体例子大家可以参考一下其他答案,有的列出不少,我就不重复列出了。不过说一点,有的错误是在特定版本的书里才出现的,看了一下其他答主找的大部分来自第四版,这些错误有的已经改正,但很多也还在,尤其是有些地方没讲清的问题,大部分在第五版仍存在)

Zhu xiangping表示,我觉得很好,我当时学C++就是用的他的书。看他的书让我感觉最舒服的是每当我看到一处知识产生了疑问然后我再往下看就看到他提出了相同的问题并作出了解答。有很多次这样的体验,我觉得这只能是一个教学经验丰富的老师才能做到。

通过学习他的书,我编程的能力对付一般问题应该没有问题。当时C++考试成绩应该在专业里前三,C++项目实习是第一(实现了很多项目没有要求的功能老师还给附加了分)。后来做通信实验,嫌手动采集处理数据麻烦,我还写了个小软件来实现数据采集处理的自动化。当然这对于那些代码大牛来说应该是小菜一碟,但是当时我就在学校开C++时学过程序语言,其余时间基本没有写过代码。后来接触了几种其他计算机语言,我能很快上手。我想这要归功于当时C++的学习。

对于喷,我想这是不可避免的,知名度越高,喷的人越多。喷与不喷,那是个人的自由。适合自己最好。

▍这本书实际上培养了一大批的人


以前在计算机领域可以借鉴的东西很少,可以说正是这样的书籍,以详细的讲解和通俗易懂的风格,培养了一大批的基础扎实的人才,才有了之后的网页和动画,有了众多的可参考的资料,这些贡献都是不可磨灭的。

谭浩强生于1934年,58年从清华毕业,那时候C语言还没有问世。在久远的过去条件下,写出这么一本编程入门教材实属不易。

而值得注意的是,是多年来大学教材质量并没有明显改进所以,现在就是很矛盾。批评教材的主要意见其实是对的,但是在细节部分很容易受到反驳。

造成这种矛盾的主要原因,因为批评搞错了对象,结果是意见不能集中,越说越乱。现在的主要矛盾,是教材的编写方式陈旧、脱离实际,且长期得不到更新。

这个问题不仅仅发生在计算机课程领域,也不必把这个黑锅背在“谭浩强”身上。一本小说写的好,看的人就多,写的烂,看的人就少,这是显而易见的。某作者写的教材好,就采用;写的烂,就不用。

为什么写的不好还要强制统一使用呢?教材的选用还未得到足够重视中国的“211高校”有100多所,培养的老师数不胜数,其中应该有相当数量的老师有写出好书的实力。就算老师不会写,市面上也已经有好多本优秀的国外教材,提供了较新的编写思路可供参考。但是目前已经普遍反映出,大学教材停止了迭代,更没有有效的、与时俱进的质量把控。强烈希望各个大学从教材出发,做好教书育人的本职工作。

无论怎么吐槽,一个人编程水平的高低和所在大学,使用的什么教材都没有太直接的关系,很多人在网上买编程教材一定想着买个最新版本的,其实完全没有必要,这些都是客观因素,主观因素才是关键,真要想学的好,什么教材都玩的转,取决于内在的意识形态,驱动力不够有再好的教材也是浪费资源,无论怎么说老谭对于中国计算机行业的贡献还是非常突出的,感激的心情更多点。

现在还有很多的论调包含的大致意思就是C语言现在已经不行了,完全没有必要再去学习了,看看招聘职位关于C语言的真是少的可怜,现在明显的都在向高级语言进发了,大趋势是向集成化程度高的语言前进,但是集成化语言本身很多都是C语言完成的,未来可能C语言学习的会变少,但是职位要求以及薪资水平会高的让普通程序员都只有羡慕的份,物以稀为贵,这也是市场规模。踏踏实实学好正在学习的编程语言,把精力放在语言本身,而不是去争论谁好谁坏,即使分出个高低了对于个人又有什么直接好处,认准一种编程语言一直学到最后,然后想办法过度到别的语言,触类旁通。

老谭作为早期的布道者已经做出了不可磨灭的贡献,仅此一点就值得致敬。

【参考资料】
1、知乎 . 《为什么说谭浩强的书是坑?》
2、佚名 . 《怎样评价谭浩强版<C程序设计>?》
3、佚名 . 《为什么这么多人不喜欢谭浩强的C语言程序设计?》

-END-

推荐阅读

  • EasyLogger——让BUG无处藏身

  • [踩坑]CMOS器件输入管脚不能悬空?

  • [开源]基于STM32F103的疫情监控平台(RT-Thread)

  • [开源]基于Qt+STM32MP1的疫情监控平台

  • [踩坑]STM32外部8M晶体不起振会有什么现象?

电子电路开发学习 单片机点灯小能手,电子行业从业者。开发板评测、嵌入式开源项目分享、学习笔记记录。可能不会经常更新,但每一篇都是精心编写。
评论
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 116浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 80浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 170浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 44浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 85浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 75浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 104浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 68浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 141浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 125浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦