老古开发网首页
导航:老古开发网首页文章索引索引第2534页文章分类单片机第47页→[对国内C语言教材的一点感想]
| -文章搜索 - 最新文章 - |

第3076篇:对国内C语言教材的一点感想

发布时间:2006年10月15日 点击次数:3198
来源:   作者:
 
liy-tj 发表于 2006-5-15

     像中国的绝大多数同行一样,我在学校里也是通过谭浩强的《C程序设计》开始学习C语言和编程的。
     经过几年的软件开发工作,回过头来看看就总觉得这位谭老师是一个很少自己编写程序的老学究,至少缺乏编写大型复杂软件项目的经验。他的书里面没有经验建议,也没有自己独到的见解,只有完全正确的规范。感觉是ANSI C标准的翻译版,中规中矩,了无趣味。看完了也只能是知其然而不知其所以然。所以仅仅合适当工具书(但说起C语言工具书又有哪本书敢和K&R的《The C Programming Language 》争锋,或者你也可以直接下载一篇ANSI C的标准)。
     而国外的很多C语言书是由C语言创始者或拥有几十年经验的质深程序员编写的。这些书里更重要的是融入了作者多年的编程经验。在书中汇集了很多技巧和建议,笔锋犀利而又常常不失幽默,能将一个复杂深奥的问题阐述的浅显易懂。即使你使用了多年C语言之后,随手翻翻这些书,仍时常会对作者独到见解深受启发、拍案叫绝。但是看很多国内的教材却总是觉得味如嚼蜡。还常常喜欢公式到公式的推导,将一些明明是很简单的问题弄得深奥晦涩。
     举一两个简单的例子:
1.运算符优先级问题
     谭浩强的《C程序设计》只是在附录中将ANSI C里有关运算符优先级的规范抄了一遍,区区两页。当然这样最稳妥,最不会出错。
     在《Pointers On C》中作者不仅详细解释了运算优先级,还分析了C语言规范中定义不清的地方,也就是告诉读者C语言中哪里存在陷阱。此外还对在各种编译器中的运算结果进行比较。可以看出作者颇费了些心思。
     而在另一本书——《实用C语言编程》/《Practical C rogramming》中作者建议道:你只需要记住乘除的优先级高于加减,其它地方一律加上括号。我经历过几次对着运算符优先级表帮别人查软件BUG以后,就把这句话作为编程原则发给每个新来的人。
2.编程风格
     谭浩强的书从不涉及编程风格,可能是因为C语言规范中没有这方面的规定,也可能他自己就没意识到编程风格的重要性。
     而在绝大部分国外的入门级编程书籍中常常都会单辟一章详细介绍编程风格,因为良好的编程习惯要从一开始培养。养成好习惯很难,坏习惯一学就会。
     现在对刚参加工作的大学毕业生做的最多的培训就是编程风格培训。因为他们绝大部分对缩进式风格、命名规则、注释的重要性等等都一无所知。但即使这样常常也达不到效果,因为这些学生早就在学校里养成了只要能实现功能,其他都无所谓的习惯。这应该算谁的责任?
     不是说谭浩强的书不好,只是觉得国内大学里的很多所谓教授的应酬太多、赚钱太多、实践经验太少、学术研究太少。写出来的书同国外的经典书籍比起来整整差了一个档次。这些在刚刚接触C语言时可能感觉不到的。但过了多年后才发觉以前走了不少的弯路,自己花了几年总结的经验教训,实际上在很多国外的优秀书籍里早就有了。
     当然也不是天下乌鸦一般黑,国内的C语言教材就全都一文不值。我看过清华大学裘宗燕教授的《从问题到程序--程序设计与C语言引论》就很不错。里面汇集了裘老多年C语言教学的经验,书写得也非常用心和严谨。另外裘老的很多翻译作品也是经典中的经典,如《C++语言的设计和演化》、《C++程序设计语言(特别版)》、《程序设计语言——实践之路》等等

欢迎进入老古论坛进行讨论
[单片机] 相关文章:
单片机模拟遥控器
简介:
了解了遥控发射的原理,就可以来自己动手做一个遥控器了,可是没有专门的芯片怎么办?用单片机,然后配合程序完成遥控码的发射。 1、硬件电路 其中,单片机选用AT89C2051, 使用两节电池供电就可以工作,用P1口构成3×3的模拟键盘,用一个IO口作为遥控波形输出端,然后接三极管驱动红外发射管,发出需要的遥控波形。 2、程序编......

SPI接口介绍
关于单键开关电路
初学单片机的一些概念
C51音乐程序
 
下一个:[显示技术]OLED的结构与特点
简介:
/ 有机发光二极管的工作原理 有机发光二极管利用了电子发光的特性:当电流通过时,某些材料会发光。而且从每个角度看,都比液晶显示器清晰。 OLED显示原理 有机发光二极管最简单的形式是由一个发光材料层组成,嵌在两个电极之间。输入电压时载流子运动,穿过有机层,直至电子空穴并重新结合,这样达到能量守恒并将过量的能量以光脉冲形式释放。这时其中一个电极是透明的,可以看到发出的光。通常由铟锡氧化物(ITO)组成。 OLED显示材料 光的颜色与材料有关。一种方法是用小分子层工作,例如铝氧化物。另一种方法是将激......

上一个:[嵌入式系统]让CVS来管理你的程序(1)——CVS概述

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:31毫秒