C++语言教学中编码标准化问题浅析

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:hudanrong
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:C 程序良好的可移植性使得C 语言成为程序设计人员的首选工具语言,而保证这一特性必需使用标准化的C 编码。国内高校尤其是高职院校的教材中,存在着大量非标准化的C 程序,不利于培养具有标准化C 编程风格的学生。本文从C 发展史、教育工作者和教材规范化等多个角度出发,分析了这一问题产生的原因,并提出了相应的解决办法。
  关键词:C 标准;可移植性;高等教育
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)18-21ppp-0c
  
  1 引言
  
  1983年第一个C 程序投入使用,1994年8月,ANSI/ISO委员会草案登记,这便是业内所称的早期的C 标准,1998年11月,ISO/IEC:98-14882标准(以下简称98标准)被批准,标志着C 代码的标准化正式诞生[1]。C 语言诞生以来,延续了C语言的重要特征,即C 源程序良好的可移植性。正是这一特性,使得C/C 语言长期以来一直是程序开发人员的首选。
  C 语言良好的可移植性是它具有较强生命力的关键所在。目前标准委员会正在修订C 标准,并拟于2009年发布修订后的09标准。可以预见,C 语言作为程序开发的主要工具仍将延续很长的一段时间。然而,国内高等教育尤其是高职教育,在C 语言的教学中却长期使用了非标准化的编码方式,这对于学生毕业后从事程序设计,写出具有良好可移植性的程序是相当不利的。
  C 程序编码的标准化在互联网的一些论坛里有一些讨论,然而关于现行教材或专著里存在的问题,却鲜有文章进行报道。本文通过讨论现有高校教材尤其是高职教材中C 代码编写方式与现行C 标准的一些距离,试图引导高校教材尤其是高职教材中C 程序编码走向标准化。
  
  2 标准化的目的和意义
  
  标准化之争是信息时代商业竞争乃至国家之间竞争的必争之地。欧美的企业一直依赖都很热衷于标准化之争,UNIX从诞生到现在的各自为政就是一个很好的例子。而IT领域信息技术的高度集中和相对垄断也使得国际标准化组织制定的很多标准并没有被企业所采用,相反地,出现了很多像“Microsoft Windows”、“Internet Explorer”这种“事实上的工业标准”。C 语言从诞生到98标准诞生,花了整整15年的时间,对于发展迅猛的信息技术,这是一个相当漫长的过程。在此期间,国际上一些跨国公司如Microsoft、IBM、Borland(如今的Inprise)相继开发了自己的C 编译器,这些公司的编译器除了包含标准的C 编译器的内容之外,还加入了自己的一些特性,甚至修改了部分标准。一旦程序设计人员使用了这些非标准的特性,代码的可移植性将会成为一个大问题。因此,如何教导学生编写标准化的C 源程序,成为C 语言教学中一个非常重要的问题。
  
  3 C 语言教学中存在的非标准化编码的主要问题
  
  Microsoft公司曾经因为其在软件行业得天独厚的地位,而在MS Visual C 编译器中采使用了很多非标准化的内容。然而,在MS Visual Studio 2005发布之后,Microsoft公司相关人员特别指出该产品的一个重要变化就是完全符合98标准[2]。对于程序员来说,如果他原先在MS Visual C 中使用了非标准化的代码,在移植到MS Visual Studio2005这个平台上时将会花费相当大的精力去修改代码。即便是微软这样一个跨国企业,都不得不向国际标准靠拢,可想而知,标准化对于企业来讲是多么重要了。对于程序员,如何编写标准化的C 代码,保持C 代码的良好可移植性则是重中之重。然而,在我国的高校尤其是高职教材中却存在着甚至是大量存在着非标准化的C 程序,究其原因,笔者认为主要有如下几个方面:
  3.1 C语言的影响
  这也是最重要的一点。我国高校早期从事C 语言的教学和传播者主要是从C语言的使用者转移过来,C 语言的向下兼容性(即兼容C语言书写的源程序)使得这批教师能够较快的胜任C 语言的教学工作。不可否认,他们对中国高等教育的C 语言的教学和普及做出了不可磨灭的贡献。然而,C 语言所倡导的面向对象程序设计方法和C语言的面向过程程序设计方法还是存在着很大区别的,尤其是面向对象要求对数据进行封装保护的机制在C语言中是不存在的。而我们的第一批C 语言的传播者以及教材的编著者,却把C语言的风格和编程习惯带到了C 语言的教学中来,并且一直延续至今。例如:在C语言中主函数main是可以没有返回值的,即返回值类型可以是void,而在C 标准中,明确要求主函数main必须返回int类型。再例如,C语言中人们习惯使用字符数组或字符指针来保存字符串如char name[30], char *str等,而在C 中,提倡使用string对象来替代字符数组的变量。在我所使用的“十一五”国家级规范教材[3]中,从头到尾使用的都是字符数组和字符指针,而没有一处使用string对象,这明显违背了C 面向对象程序设计方法的精神。
  有人问及C 语言的创始人也是C 标准的制定者之一Bjarne Stroustrup博士,有没有想过删除一些C 语言的特性。Bjarne Stroustrup博士说:从语言设计的角度讲,我最不喜欢的部分是与C兼容的那个子集[4]。然而,出于对现实世界里工作的程序员的考虑,保留与C兼容的子集是有必要的,但这并不意味着我们要写出C风格的C 程序。
  3.2 大量非标准化编译器的影响
  C语言和C 语言都是在UNIX平台下诞生的,在UNIX平台下使用的都是标准的编译器G 。而国内由于种种原因,UNIX平台一直未能进入主流的应用,大多数的企事业单位包括高校使用的都是MS Windows平台,高校教育又过分的偏爱了MS Visual C 这一典型的非标准C 编译器,即便是计算机等级考试这一全国性的考试,在C/C 的编程环境上也是选择了MS Visual C 。MS Visual C 编译器包含了很多与C 标准有出入的功能。这在某种程度上助长了C 的教学者编写出大量的非标准化代码。例如大家所熟悉的eof()函数,该函数根据当前指针是否指向文件结束部分而相应的返回true和false两个值,即当我们从一个文本文件读取数据时,如果指针指向文件的尾部则返回true,如果指针还未指向文件的尾部则返回false。MS Visual C 的编译器和基于标准C 的编译器如Dev-C 编译器对这个函数的处理却有很大的不同[5]。标准编译器在第一次读取文件的最后一个数据后仍然返回false,只有在试图继续读取数据时发现已经到了文件的结尾才返回true,而MS Visual C 编译器则在我们读取到文件的最后一个数据之后就返回true了。这样,针对不同的编译器,下面的这一段代码就有了不同的结果:
  void totalFile(char *fName, float
其他文献
中国作为一个统一的多民族国家,在以普通话作为通用语言的基础上,提倡少数民族保留自己的语言特色。许晋的《内蒙古人口较少民族居住区语言生态与语言传承研究》一书主要以内蒙古人口较少民族语言生态作为研究对象,在语言调查的基础上客观呈现了内蒙古达斡尔、鄂伦春、鄂温克和俄罗斯四个人口较少民族语言生态的变迁过程,并对语言生态大环境进行评估。本书由三部分组成,着重从政治、经济和教育方面,分析了内蒙古人口较少民族杂
书名:中国音乐中的文学  作者:闫笑雨、尚红  出版社:广东教育出版社  出版时间:2016年  ISBN:9787554810330  定价:42元  文学与音乐都是艺术,只不过文学是以文字来表现作者情感,而音乐是以声音来表现作者情感。文学与音乐虽然是两种不同的艺术形式,但是却有着千丝万缕的联系。我国古代很多艺术是文学与音乐的结合体,例如,清商乐、元散曲以及宋元戏曲等,这些都是我国艺术发展史上宝
摘要:介绍了基于Authorware附带的数据库编程接口Odbc.u32的打开数据库、SQL语句的执行、关闭数据库等3个功能,并详细介绍开发电子词典的关键技术。  关键词:Authorware;数据库;电子词典  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)21-30533-02    Developing Electronic Dictionary Based o
摘要:为培养具有创新精神和实践能力的高素质计算机人才,需要不断改革和完善教学模式。MCLA教学模式在计算机课程教学中的成功应用,使我们看到传统教学模式改革的必要性。本文探讨了MCLA的教学方法及其实施的关键环节,分析了这种教学法的特点,最后讨论了高校计算机课中引入MCLA教学模式的要求条件。  关键词:计算机教学;MCLA;ISAS;教学模式  中图分类号:G642 文献标识码:A文章编号:100
摘要:网卡、软件、ADSL调制解调器、线路等故障及分析。  关键词:ADSL;故障  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)21-30432-02    On ADSL Broadband Network and Common Fault Analysis  ZHANG Bao-jun   (Computer Communications,Huaibei Mi
摘要:小说《赴宴者》勾勒出了一幅亦真亦假、亦虚亦实的北京社会生活画面,严歌苓独具匠心,让“记者”董丹带领读者在一同享受美味盛宴的同时,跨越中西文化,寻求心灵的回归,也给广大读者献上了一场各种文化纷繁交织的文化“盛宴”,使读者也成为回归心灵家园的“赴宴者”。  关键词: 严歌苓 《赴宴者》 文化 心灵回归  一、引言  在外国文学迅速发展的新千年,许多美国华裔文学家不断走进大家的视野,《赴宴者》的作
摘要:《义务教育语文课程标准(2011年版)》反思了经过十年课改实践所暴露的语文教学存在的一些误区,理清了一些模糊的认识,纠正了一些较为偏激的认识与做法,这些纠偏对大学语文的教学也颇具启发意义。本文从语文教什么、怎样教以及课程效果如何评价三方面阐述了《义务教育语文课程标准》的修订对大学语文教学改革的启示。  关键词:课程标准 大学语文 教学改革  引言  《义务教育语文课程标准(2011年版)》(
编者按  如何用好统编本语文教材?这是当前乃至之后很长时间内教师们需要面对的问题。尤其是对于四至六年级的老师来说,不仅面临教材中很多新的教学内容,还要解决“新旧”教材之间的衔接问题。那么,除了了解教材的编写理念、框架等,在宏观上,我们应该以怎样的视角来看待统编本教材?在使用中应该遵循怎样的原则?具体到教学中,又应如何处理教材变化带来的教学内容和方法上的改变?有哪些具体策略?  本期,统编本教材总主
摘要:IP子网与VLAN都属于网络分组技术,两项技术既有相互联系,又有本质区别,在实际应用中各有千秋,本文从IP子网和VLAN的技术入手,归纳了这两项技术相同点和不同点,以及两项技术在实际组网中的应用。  关键词:IP子网;VLAN;技术;比较;应用。  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)08-1pppp-0c    1 IP子网技术及其作用    我们现
摘要:Java语言是高职高专院校进行程序设计教学的一门重要编程语言。结合高职高专的培养目标及Java语言的特点,本文从内容的安排、实例的选取、编程思想的培养、项目实训的有效开展等几方面对如何提高高职高专Java教学效果进行了探讨和研究。  关键词:高职高专;Java;教学   中图分类号:G642文献标识码:A文章编号:1009-3044(2008)09-11682-01    Research