走出C语言教与学的误区--Written By My Teacher黄放明
走出C语言教与学的误区
前言
笔者从事软件开发已26年,用C语言编写有实际用途的程序(绝不是教科书或技术手册上的例子)也有20年了。进入高校讲授C程序设计10年以来,起初感觉有些不太对劲,随后,越来越觉得国内高校C语言教与学存在着许多问题。早就萌发写篇文章,以表己见的念头。但因终日忙于学习、探索,并将所学所教理论付诸实践,以求印证,进而真正理解,以利于教学,力免误人子弟,而无暇于笔砚之间。今逢C语言精品课程建设之际,又受领导指派,故斗胆提笔,不妥之处,望方家斧正。
此处要声明三点。
其一:笔者从未有想过,通过发表本文为本人捞取某种资本。那么,笔者在干扰了自己正常学习、研究的情况下,写此文章的目的到底是什么?一为完成任务,二为一吐心声!
其二:本文是写给那些讲授或学习C语言,但对C语言又不甚了解的人群的。故,对于真正了解C语言者,本文中大部分内容就是一堆废话。
其三:本文提及了某“权威”教材的一些诟病,并非有意批判。笔者与文中提及“权威”教材的作者,素不相识,更无厉害冲突。软件开发领域有许多重要的新知识新技术,笔者还需学习并实践,以利于教学。还有许多有意义的事情等着笔者去做。何来闲暇与人口水争斗?实因此教材影响太大,当然也影响了笔者正常教学,影响了笔者的学生正确地理解标准C语言。笔者讲课或辅导学生上机时,经常须花时间“拨乱反正”,以“正”学生“视听”。否则,就是对学生的不负责任,愧对良心。当然,选用此“权威”教材,属官方钦定,非笔者意愿。
一、C语言教与学中的误区和盲区
随着计算机技术的飞速发展,新的程序设计语言如雨后春笋,不断涌现。如:Java、C#、PHP、Python、Ruby、Lua、D、Erlang、Javascript等各领风骚。而“古老”C语言因其自身的特点,一直被世界各国大学作为最重要的程序设计语言课程。TIOBE程序设计社区的程序设计语言排行榜上,C语言几年来稳居第二,仍是现今最流行的程序设计语言之一。然而,在国内,C语言的教与学,存在着种种误区和盲区,严重影响了C语言教与学的实际效果,以致许多人对C语言是否能够真正用于实际软件开发产生了怀疑(除嵌入式系统外,因人们对于C语言用于该领域开发深信不疑),从而引发了C语言是否应该死亡的网络大讨论。这些误区和盲区主要表现为如下几个方面:
(一)缺乏对C语言的正确认识
众所周知,C语言是Bell-Labs在1972年,为设计UNIX操作系统而开发的。由于C语言小巧灵活、功能强大且通用,很快在全世界流行。然而,不久后,不同编译器厂商对C语言的实现之间,存在着一些微妙的差异,这些差异形成了不同编译器厂商的“方言”。各种“方言”损害了C语言的主要优势(或重要特点)——可移植性,同时也给C程序员带来麻烦。为了解决这些问题,ANSI于1983年成立了一个委员会,以确定C语言的标准定义。经过多次修订,C语言标准于1988年完成,并于1989年12月正式通过,-1989(称为ANSI C)。1990年ISO通过此项标准,将其作为ISO/IEC 9899:1990国际标准,称为标准C(1989)或简称C89。其后,WG14(C语言国际标准化工作组)对C89进行了适当的修订或增补,于1995年发布了C95标准。自1995年起,WG14对C语言标准作了更大的修订,于1999年完成并通过,形成了C语言的最新正式标准,即ISO/IEC 9899:1999或称C99。
制定C语言标准的目的有三:
:尽量消除不同编译器厂商对C语言实现上的“方言”;
:规范已存在的编程习惯,以弥补C语言中的明显缺陷;
:以标准来力保C程序的可移植性。
当然,制定C99标准还有两个目的:
(支持国际字符集)
通常,业界把C89以前的C语言实现称为传统C(Traditional C),而把遵循或支持C89、C99,特别是C99的C语言实现称为现代C(Modern C)。
在国内,最流行的编译器莫过于Turbo C C/C++ 。那么,这两种编译器究竟属于哪种?是传统C还是现代C?看看它们的诞生年代和语言特性就知道了。Turbo C ,在当时是最好的C编译器和IDE。显然,Turbo C属于传统C再加Borland实现的“方言”。Visual C++ (笔者记不太清了),但其中充斥着大量的宏(Macr
企业资源规划 来自淘豆网m.daumloan.com转载请标明出处.