“C++程序设计”的案例式类比教学方法

2022-12-06

“C++程序设计”属于计算机相关专业的一门较重要的专业课程,目前中国相当多本科院校的相关专业都有开设,“C++程序设计”一般应开在大学一年级。结合我院14级网络工程专业大学一年级开设了Java高级语言的现状,本文以实际讲授网络通信软件编程过程,探索“C++程序设计”的案例式类比教学运用技巧。C++和Java作为程序设计的高级开发语言中不同的种类,均为软件设计服务的一种工具,为求解各程序的功能和软件设计的主要问题,二者在实现机制较多方面比较类似,特别在程序设计的核心思想方法上比较相像。但C++语言和Java语言毕竟是两种不同类别的语言,在执行时模式、面向对象设计、跨平台与可移植性和内存管理机制等还是存在相当多的差异。对于软件设计课程学习效果比较好的教学方法,无疑问地算案例式类比教学为佳,即是将新的陌生的技术知识和已熟悉的知识做比照,分出它们之间新旧知识点相似的部分和有差异的地方,再进行差异化地加强学习,旨在融合相似求差异知识,这样就会做到提高学习效果事半功倍。因此,笔者在实际从事“C++程序设计”的教学中,十分重视学生在学习C++语言程序设计时所获得的知识和体验为基础,将C++语言程序设计和Java语言程序设计进行类比教学,本文就是这一案例式类比教学方法的实践总结。

一、程序设计语言进化简况

在计算机技术发展的各历史阶段产生了较多种类的程序设计语言。计算机程序设计语言发展经历了由低级简单到高级复杂,从密切依赖硬件发展到与平台无关等过程。当各类硬件发展愈发复杂、功能集成度较高的时候,程序设计才凸显愈发重要了,此时这种依赖关系也决定了程序以及程序设计语言的进化发展。随着硬件技术的迅猛发展,计算机的高性能和大存储容量得到突飞猛进式的发展,设备规模倾向便携式微型化,功能越来越多元化复杂化,各类高级语言程序设计迅速进化到一个全新的阶段。在编程语言流行度的评估方面,TIOBE多年来作为最受认可的权威机构,每个月都根据相应使用者、相关课程、第三方厂商以及来自多个大型搜索引擎的统计数据,发布前100名编程语言的排名情况,同时配以跨年度同期比较分析[1]。在面向对象的程序设计时代兴起时,C++作为C的扩展,顺应时代需求,和C是同源家族,历经多年演进发展,已算是高级语言中的精品。互联网时代兴起之时,Java与C++一样同时进行过大规模推广,它是一个专门服务于面向对象设计进行开发的高级语言。它的风格极很接近C++,也可类比理解为C++的一个简化版,融入了C++的严谨和便捷,剔除了C++中过于高深难懂的内容,增加了内存自动管理机制。Java的还有一大优势便是技术开源,这吸引了广大用户的喜欢和开发学习热情,有不少知名公司开发和拥有巨量的代码库进行支持,这一点与C++语言具有惊人的相似性。图1是2017年5月发布的统计图。

二、源程序的数据操作

在源程序数据的输入输出操作方面,C++语言和及Java语言存在较多差异,以面向标准输入输出设备的数据输入输出为案例。C++语言提供的直接面向应用的相关语句、函数和过程,c++标准输入输出对象是cin/cout,还兼容C语言中的fprintf、vprintf、fscanf、scanf、sscanf、fgetc、fputc、getc、putc、getchar、putchar等,这些函数基本上满足了面向应用的各种类型数据的输入输出[2]。Java语言提供的标准输入输出对象是System.in/System.out,System.in作为Input Stream类的一个实例实现stdin,可以使用read()和skip(long n)两个成员函数。其中read()让你从输入处读一个字节,skip(long n)让你在输入中跳过n个字节。System.out作为Print Stream来实现stdout,你可以使用print()和println()两个成员函数。这两个函数支持Java的任意基本类型作为参数[3]。在C++语言中,有不少运算符使用区别于Java语言,C++支持操作符重载机制,而Java不支持这个机制。例如对引用类的成员操作时,C++语言可以使用成员运算符(.)引用或指针运算符(->)引用,而Java语言则是通过类名加(.)引用。

三、执行时模式

C++语言与Java语言的本质不同在:Java应用必须运行于JVM(Java Virtual Machine)之上,而JVM又必须依赖于相应的操作系统之上。C++语言构成生成的程序可直接被CPU执行,被操作系统调度。C++编译器生成的是可被CPU调度执行的机器码,而Java编译器生成的很类似C编译器产生的中间码(obj文件)[4]。C++和Java程序执行时的分层结构如图2、图3所示。

四、面向对象的设计

一般认为C++语言和Java语言均是面向对象的,而C++语言兼具面向过程的。Java语言是因面向对象而设计,这一点毫无疑问,还是从C++语言吸取了许多面向对象的设计经验和思想方法。类的概念是面向对象的核心,下述例子即是类的相关代码对照,分别用C++语言和Java语言实现,相应代码在VC++,GCC和Java1.7.0编译运行均通过。

五、跨平台与可移植性

在物联网硬件大发展的今天,大量各类型的硬件平台如雨后春笋般快速生长,面对极大量的新兴平台,兼具成本或者性能考虑,对程序设计跨平台移植要求越来越重要!在长期的程序设计演进过程,C++已具备了较为完善的开发编译系统,利用这些功能强大的编译系统,便可以高效管理大规模的系统级应用项目开发设计。例如复杂操作系统的开发和编译,大多都应用到了Make File编译系统。而GNU的编译系统的兼容性是C++的一大特色,可高效地支持新型CPU,当前主流的CPU厂商提供了GCC支持,而这些是Java所望尘莫及的。从系统的应用角度看,要完全做到与平台无关是不现实的,这也是嵌入式开发领域必须面对的大问题。

因日益智能化复杂化各类硬件都提供了GCC支持,这就成就了GCC大作为的繁荣界面。而Java长期只寄托在JVM发展,同时JVM又受限于操作系统。图4是从系统的角度来分析各模块的依赖关系。

六、结语

经典的C++现依然是整个软件开发领域的中流砥柱,随着计算机网络技术的发展演进,时有后起之秀向它的统治地位挑起大战,而几十年来它自身也日趋完善。鉴于Java不能直接操作CPU,依赖于JVM支持,这就直接制约它在面向底层硬件的应用开发。假如CPU极快,高速缓存够大,支持系统可以轻松地容纳整个JVM,而随着硬件技术的迅猛发展,这也完全可能实现Java直接操作CPU的,进而支持面向底层硬件开发[8]。

实践经验分析通过案例式类比教学,一方面充分利用学生已掌握的知识和体验,帮助他们更好地学习C++语言相关知识,就可以把学生们在高级语言程序设计中获得的有关程序设计的思想方法和规律较好迁移到C++语言程序设计的学习中来,加强差异化的类比学习,极大地提高学习效果;另一方面,可以让同学们通过案例式对照,把以前在学习高级语言程序设计时没搞明白的一些问题,以及没意识到重要性的要点串联贯通,以致触类旁通的功用。总之,引用案例式类比教学,不仅可以提高学生的学习效果和效率,而且新旧知识融汇相得益彰,加强综合应用能力锻炼。目前本系统使用情况正常,获得学生认可。

摘要:基于案例式类比教学模式的好处,参考Java程序设计中的相关机制和特点,归纳出“C++程序设计”案例式类比教学的基本方法。

关键词:C++程序设计,面向对象设计,案例式类比教学

参考文献

[1] TIOBEProgramming Community Indexf or June2017.[EB/OL].http://www.tiobe.com/.

[2] 普拉达(Stephen Prata).C++Primer Plus(中文版)[M].北京:人民邮电出版社,2012.

[3] 唐大仕.Java程序设计[M].2版.北京:北京交通大学出版社,2015.25.

[4] 马乾颉.程序设计语言C与Java之探讨[J].信息技术,2010,(10):132-138.

[5] Liang,Y.D..C++程序设计[M].北京:机械工业出版社,2015.4.

[6] Bruce Eckel.Java编程思想[M]..北京:机械工业出版社,2007.97-98.

[7] 赵立成.Java虚拟机的内存管理策略的研究[D].北京:电子科技大学,2007.

上一篇:环境保护中应用高分子材料的现状分析下一篇:电力工程项目管理模式初探