来源:期刊VIP网所属分类:计算机信息管理发布时间:2020-12-16浏览:次
摘 要:计算机类专业的学生掌握编程解决问题的基本技能,是基本的专业素质。算法是程序设计的灵魂,是用系统方法描述解决问题的方法,是从编程通向计算思维的必由之路。计算机类专业的“系统能力”,是计算机类专业相较于其他专业的核心竞争力。本文总结了六年来采用不同编程语言进行教学的比较,讨论了如何贯通专业学生的这些专业基本素质和核心能力,为我们进行教学时编程语言选择提供了基于系统能力的可行方案。
关键词:程序设计;数据结构与算法;计算机系统;编程语言
1 引言(Introduction)
數据结构与算法课程曾经用伪代码教学,旨在掌握算法思维本身。现在基本采用一门具体的编程语言进行教学,可能是Linus Torvalds说:“Talk is cheap,show me the code.”,也可能是程序执行时间比算法复杂度分析更有感觉。当前计算机系统能力的培养也是一个倒逼的动力,因为体验代码的执行、调试程序的bug,是让学生深入理解计算机系统,加强工程能力培养的必由之路[1-4]。
目前,计算机类专业的程序设计基础和数据结构与算法这两门课程的教学,选择同一门编程语言进行两门课程的连续教学是较好的选择。这样为学生“学好一门编程语言”+“计算思维”这个主线提供了很好的条件[5]。
那么是让学生自主选择课程的这一门编程语言,还是根据专业课程体系的需要进行设定,这是我们进行课程体系设计的时候容易引起争论的话题。我们根据TIOBE编程语言排行榜以及网上招聘和地区人才需求,“所学即所用”“一点打透”等原则,在学生中试行了学生自由选择排名前列的几种编程语言进行这两门课程的教学。现在根据计算机系统能力建设的趋势,回归了简单的C语言路线。这又会让人想起发明C语言的Dennis M. Richie说:“Keep it simple stupid”[6]。我们做了一些思考和总结,供专家和同行们参考。
2 面向对象编程语言的特点(Characteristics of object oriented programming language)
我们以Java语言为例来说明用面向对象编程语言来进行程序设计基础+数据结构与算法课程教学的特点。Java的优势在于实现了面向对象的主要技术(封装、继承与多态、接口等),而放弃了容易引起混乱的技术(例如多继承)。
(1)封装。在数据结构与算法课程教学中,数据抽象是首先要面对的主题。现在的面向对象技术已经很成熟,如果选择将数据成员(数据结构)设为私有属性隐藏起来,通过调用公有成员方法(算法)访问私有数据,Java完成了定义自己的数据类型(数据抽象)和对这些数据操作的封装。数据类型和相关操作(算法)有了密切相关性,定义了一个类的数据成员(数据结构)之后,相应的算法就是同一个类中的各种方法,就可以创建对象,以及派生出更多的细分、实用的类。
(2)泛型。泛型是Java 5以上版本提供的支持这一目标的方式之一。泛型也就是参数化类型,例如Stack是某种元素的栈,而Stack处理的就是String对象。同理,Queue就是处理Date对象[7]。
算法中经常需要进行对象的大小比较,一般采用两种方法实现泛型,从而实现对象间可比较。一是用Object表示泛型,二是用Comparable接口类型表示泛型。用Comparable接口类型表示泛型时(从JDK 1.5开始,在java.lang.Comparable中使用了泛型),需要定义对象为Comparable接口的实例,然后调用Comparable的compareTo方法(需要重写)就可以进行对象间的比较操作[8]。
推荐阅读:计算机论文发表的普通期刊
期刊VIP网,您身边的高端学术顾问
文章名称: 基于计算机系统能力培养的程序语言选用分析
文章地址: http://www.qikanvip.com/jisuanjixinxiguanli/54679.html