谈谭浩强的C语言教材

自从上了大学以后我就没看过多少文学的书,我一直感觉我的文学和理科是脱轨的,因为从小开始我就对中国传统文学耐不下心,看过最长的书是JK罗林的《哈利波特》全集了吧,但是时间实在是太久远了。

这学期大学语文要写读书笔记,我就谈谈大一时期读过的几本编程入门类的教材吧。

因为我自己有简单的VB开发经验,中学时期经常因为没有时间而去深入研究C语言,来到大学之后我就在图书馆里找了几本C语言的自学教材来读读。

我首先看见的是一本被借阅次数很高的谭浩强的《C语言程序设计》,根据淘宝看销量的经验我就首先倾心与这本书。从图书馆回来后,我发现这本书上确实有很多人留下的笔记,恩,没想到学长们确实挺用功,还在书上留下了这些笔记。

粗略的翻了几页后,我发现谭浩强老先生特别喜欢推敲一些语法,本来我认为C语言毕竟是比较底层的语言,对学生来说,从刚开始就打好基础,以后写出来的程序一定更能追求效率吧。

但是毕竟这是一种计算机软件的开发语言,一直以来编程的学习方式就是边学边用,所以我就一边在电脑上调试书上的各类代码。

不过我不是完全的初学者,我还有其他语言的学习经验。对于一个“程序员”来说,每个人都有自己的编码风格,虽然我只是个半吊子,但是谭浩强老先生的编码风格乱的一塌糊涂。

在C语言里,很注重代码的工整程度、缩进风格、括号位置和代码的编排方式。谭老先生的教材过于注重一些乱七八糟的所谓的技巧,比如指针的转换,虽然C语言不进行检测,但是在以后发展的C++里根本无法编译通过。还有一些类似于i+++++i等等的奇葩语句,虽然就算一个经验老到的程序员也会在这里出错,但是在实际开发中根本不会写这样的语句,因为这种语句根本不是合格的代码,在日后的维护过程中会异常艰难。而且在谭老先生的书里找不到真正的编程技巧,在之后学习的C++里我发现很多C++的方法在传统C里就有相应的实现方法,但是这是谭的书里都没有的。

之后我也去网上查看了对谭浩强的教材的评价,发现都不怎么高。

= =鉴于网上对谭浩强的书评价也不高,所以我之后又找了一本国外的英译教材《VC++入门经典》,由美国的Ivor Horton撰写,并由杨浩翻译的教材。从书本的厚度上已经是前一本的好几倍了。

在《VC++入门经典》这本书中,有着和谭浩强完全不一样的风格。国外的教材注重与实用,结合着实际开发的案例来讲述。可以举几个例子,《C语言程序设计》中,对运算符的优先顺序强调是学生应当牢记,但是《入门经典》里描述说,你只要记住先乘除后加减,其他地方都用小括号标注就好了

又或者讲到自增自减运算时,《入门经典》特别强调,不要在同一句话里多次使用自增自减运算,而不是像《程序设计》里的讲述方法,谭老先生把各种结果都用较深奥的原理来讲述(虽然在之后更深入的学习后我确实掌握了各种奇怪结果的原因),但是绝对不能在初学者的书里就讲出来,这会打乱初学者的思路。

另外还有一个是程序的目标。这是国内不仅仅是谭浩强的书的问题,几乎大部分的编程书籍都是用数学题目来帮助学生编写代码,这是一个很错误的方式。首先编程对于普通人来说,入门是最枯燥的事情,因为在刚入门时你必须对着一个黑色的屏幕编写代码,把数字输入,然后把结果输出。很多人以为我学会了一门开发语言后就能继续自学写好多有意思的软件了,但是刚入门发现就是整天在做数学题,很容易让人陷入枯燥的情绪。不过国外的教材里,往往都是在每章开头提出一个实际问题,之后围绕解决这个问题,展开后面代码的编写与安排。这会给学生提供一个循序渐进的满足感,即使现在对着的还是一个没有GUI的程序。

其实还有很多方面,比如谭的书里很多变量都命名为a, b, a1等等,但是《入门经典》则清楚讲述了变量明明的几种风格,比如驼峰命名法:

正如它的名称所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。驼峰命名法跟帕斯卡命名法相似,只是首字母为小写,如userName, passWord等等。因为看上去像驼峰,因此而得名。

从上述几个比较中,可以清楚的看出来国内教材和国外教材的差距,我并不想在这里又上升到抨击国内应试教育的高度,因为这只是一篇读书笔记而已。但是我相信,我更喜欢《C语言入门经典》来推荐给学弟们自学C语言,因为那更像一本编程语言的教学书籍,而不是一本数学应用题大集。