新的编程语言不断涌现,同时一些旧的语言因为不能满足需求而被淘汰。而C语言因其与主流操作系统和新兴语言的密切联系(Windows、UNIX和Linux的大部分代码都是用C语言写的,而Perl和Python等语言“新锐”,最初也是用C语言实现的),故一直保有较多的用户。在国内外的大多数高校,C语言也一直是主要的计算机教学语言
问题一:C语言不是FORTRAN
许多作者在编写教材时,仅仅把C语言当作一种更好的FORTRAN 这种观念是否正确,本文不作讨论 ,书中的多数习题都是数学问题。在把C语言引入大学教学的早期,这样做并不奇怪。因为在我国计算机科学发展的早期,计算机主要是为大规模数值运算服务的。许多教授C语言的老师都有用FORTRAN解决数学问题的经历,所以他们在编写教材时,自然把注意力集中在数学领域。而且,Matlab和Maple等数学软件那时尚未进入我国,使用C语言解决数学问题可以说是顺应环境的。但是同10年前相比,现在的大学生很容易得到各种数学工具软件,在这种情况下,C语言教材的习题仍然没有多大变化,这就有些耐人寻味了。在书店里,随意翻阅几本C语言教材,几乎总可以发现求最大公约数、矩阵转置等“经典”习题。一些所谓“创新”的教材,不过是在引入数学问题时转换了一个角度。可以说,这些C语言教材仅仅是在教授学生用C语言解决数学问题,而书中的数学问题用Matlab甚至EXCEL只需一个命令就能得到结果。这样的习题对学生能有多少意义呢?C语言的设计者Ritchie说过,学习一种语言的最好方法是编程。而一味地让学生编程解决没有吸引力的问题,恐怕他们的学习热情很快会被耗尽。在这方面,作者们应该多多参考国外的优秀教材。例如Kernighan和Ritchie写的《C程序设计语言》(The C Programming Language 2ndEd),在设计习题时,始终考虑C语言的特性:它确实是一种通用性极强的语言,但它的各种特点使它在编写操作系统和编译器时具有极大的优势。因此书中大多数习题都与这几个领域的重要概念密切相关,而纯粹的数学题只在第1章出现了几道。国外还有一些较新的C语言教材,全书习题以编写一个小型的语言编译器为主线,学生把习题从头到尾做下来,一个较简单的编译器也就构造出来了。这样更容易让学生掌握C语言的精髓,同时也能让他们更快地获得“专业感”。
问题二:TurboC2.0老矣
在选择编程环境时,Turbo C 2.0始终是多数作者的“最爱”。Turbo C 2.0是美国Borland公司于1988年推出的产品,在DOS时代,它是C语言开发环境中当之无愧的佼佼者。但是,16年过去了,在这16年中,DOS早已被Windows和Linux取代,C语言也经历了两次大的修订(分别在1989年和1999年)。因此,无论是在使用的便捷性上,还是在对语言标准的支持上,Turbo C 2.0都已经“廉颇老矣”。作者们之所以抱着TurboC2.0不放,固然说明这个软件确实优秀,但更主要的,恐怕还是图省事,不愿意在教材修订上下大力气。实际上,在Windows环境中,目前有许多C语言编译器和开发环境可以免费下载,如Dev-Cpp(http://www.bloodshed.net),LCC-Win32(http://www.cs.virginia.edu/~lcc-win32/),Mingw(http://mingw.sourceforge.net )。同Turbo C 2.0相比,这些开发环境提供了更方便的使用特性,更新的语言支持以及更多的帮助文档。对Borland或者微软公司的产品情有独钟的作者,还可以登录它们的网站,免费下载最新的C 编译器(均可以编译C语言源程序),用它们作为教学环境。如果学校使用的操作系统是Linux,那就更方便了,因为几乎所有的Lin鄄ux发行版本(distributions)都提供了C语言编译器gcc。对于有经验的C语言用户来说,熟悉以上编程工具并不困难。作者为什么不考虑把它们介绍给学生呢?
目前教材市场竞争已趋白热化,同时越来越多的国外优秀教材进入中国。如果我们的C语言教材作者仍然墨守陈规,不敢或不愿大幅度更新教材内容,那么他们的作品终将乏人问津。