APP下载

软件工程专业编程语言选择及教学方法探讨

2017-04-12谷灵康

淮南职业技术学院学报 2017年1期
关键词:编程语言编程语言

谷灵康

(安徽工程大学计算机与信息工程学院, 安徽芜湖241000)

软件工程专业编程语言选择及教学方法探讨

谷灵康

(安徽工程大学计算机与信息工程学院, 安徽芜湖241000)

随着计算机技术的发展,出现了多种编程语言,特别是软件工程专业的迅速发展,编程语言的选择及教学方法的改革也更加迫切,为适应就业需要, 选择开设合适的编程语言,同时要求理论教学和实践教学要有效结合, 教学要与时俱进, 这样才能培养出社会需要的优秀编程人员。

软件工程; 编程语言; 教学改革

一、软件工程专业人才的需求环境概述

软件产业是信息产业的核心,是关系国民经济和社会发展的基础性、战略性新兴产业,是信息化建设的关键环节和21世纪国际竞争的制高点。软件产业保持健康、快速发展的关键是人才培养,但我国乃至全球的软件工程技术人才尚有较大缺口[1]。因此,做好软件产业的“源头活水”,形成一支有相当规模和质量的从事软件开发与应用的专业人才,特别是努力造就一批具有国际化、创新型、工程化的复合型软件工程人才,为软件产业的持续健康发展保驾护航是百年大计,而编程语言又是软件工程专业的核心课程,因此对于编程语言的选择及教学方法研究是重中之重。

二、主流编程语言分析及选择

针对目前软件工程专业需要选择开设什么编程语言,想成长为顶尖Coder需要选择什么编程语言?TIOBE 2016年10月发布的编程语言中,Java毫无悬念成为第一名。TIOBE编程语言社区排行榜是编程语言流行趋势的一个指标,这份排行榜排名基于互联网上有经验的程序员、课程和第三方厂商的数量。排名使用著名的搜索引擎进行计算。在Top20榜单(如图1所示)中,Groovy 在 2015 年底出现了爆炸性的增长,因此在 2017 年 1 月左右的增长速度可能就不会太快了。谷歌的 Go 语言增张速度最快为1.67%,这其中 Docker 这个以 Go 语言写就的容器应用普及开来很可能在其中助了一把力。 其他类似 Objective-C、Swift 以及R语言等编程语言的年度增长率虽接近1%,但还达不到年度编程语言的标准。特别是再次挤入候选名单的 Objective-C,从 2014 年 4 月的 12.875 % 下跌到 2016 年 1 月的 1.074 %,不过目前又在回升了。 另一个引入注目的编程语言则属Python,其份额在持续上升中,目前排名第五位,Python易于学习,而且借助Python还可进行全栈开发。

这个编程语言排行榜,会随着社会发展及需求的变化而变化,前10名编程语言走势图如图2所示。

下面来分析一下目前主流的几种编程语言:

(一) C#

这是一款强大而灵活的编程语言。与其它编程语言一样,它也可用于创建多种应用程序。事实上,C#的功能只受限于我们的想象力。该语言对开发者的操作内容完全不设任何限制,其可被用于交付动态网站、开发工具甚至是编译器等。用途:Windows应用、企业级业务应用和软件开发。优势:.net库。全面集成.net库,提供出色的功能与支持库访问能力;可转换性。其基于C语言,因此C#的结构可转移至Java、Objective-C、PHP以及C++等其它语言形式;需求旺盛。C#加Java为目前各企业需求最为旺盛的软件开发技能组合。弊端:不适合新手。C#并不是最适合新手们进行入门学习的编程语言,其学习曲线非常陡峭;跨平台能力差。由于集成.net,因此不具备跨平台能力[2]。

图1 编程语言Top20排行榜

图2 编程语言Top10走势图

(二) Objective-C

是一款通用型面向对象编程语言,其本质上是将Smalltalk类消息收发机制添加到C语言当中。其目前为苹果公司在OS X及iOS操作系统上的主要编程语言,并配合各自的应用程序编程接口。用途:iOS应用程序、苹果公司的首选语言用于构建Mac OS与iOS。优势:库。Objective-C编程语言的开发目标紧紧围绕与Cocoa编程框架的协作需要,这意味着其能够访问苹果的开发库;Objective-C运行时。由于Objective-C编写的程序往往动态程度更高,且能够收集自身相关信息以决定相关内存或数据类型,而无需在编码过程中由开发者自行选择;使用范围有限。尽管Objective-C拥有诸多出色特性,但其使用范围限定意味着我们无法为Android等其它平台开发应用。弊端:学习曲线。上手难度比较高,要求学习者具备一定的C语言知识基础;不够直观。大家不可能在几周之内学会如何开发程序,一般来讲,我们可能需要投入一年才能拿出比较像样的开发成果;不同于其它的编程思路。苹果拥有自己的编程方法思路,且与其它编程思路差别较大。

(三) C++

是一款面向对象编程语言,被广泛视为最出色的大规模应用构建语言。C++属于C语言的一个超集。用途:可用于搜索引擎、操作系统、视频游戏及软件开发。优势:助你脱颖而出。掌握C/C++能够帮助大家在众多开发人才当中脱颖而出,掌握了C/C++,大家能够深入了解Java或Python等编程语言中的内存管理机制,并了解如何回避各类常见的陷阱与难题;灵活的调整空间。C++允许大家对自己的应用进行灵活调整并充分发挥计算机的全部性能。与Java相比,C++的编程过程并不友好,但我们却能够利用它实现一切操作。弊端:艰难的学习曲线。C++非常难于学习,但在掌握之后大家将直接登上程序员金字塔的塔尖;极为庞大。C++规模可观且拥有大量极为复杂的功能交互方式。没有哪位开发者能够使用其提供的全部构建组件,但我们可以充分发挥自己的才智为程序选择正确的功能子集。

(四) Java

是一款非常有人气的编程语言,而且易学。用途:可以用于Android & IOS应用开发、视频游戏开发、桌面GUIs和软件开发。优势:市场对Java开发者需求旺盛。Dice.com于2015年5月发布的报告指出,Java开发岗位为目前需求量最大的软件技能方向;不断发展的语言。Java平台不断迎来新功能,包括lambda机制的引入;Android应用开发的基石。Google公司的Android移动平台是目前全球范围内人气最高的移动平台。开发者可以利用自己的Java技能为Android系统开发应用。弊端:占用大量内存。Java使用的内存量高于C++;学习曲线。并不属于最易于上手的语言,当然也不是最难学习的语言;启动时间较长。任何曾经利用Java语言开发过Android应用的朋友,都一定会对其模拟器代码在台式机上缓慢的运行速度留下深刻印象。Java程序员最佳去向:ebay、amazon、IBM等大公司。

(五) Python

是一项服务器端解释型开源非编译脚本语言。可单独使用,也可以作为django等框架的组成部分。用途:Web开发、视频游戏开发,桌面GUIs和软件开发。优势:易于学习。Python作为最易于掌握的编程语言而拥有极高人气;库。广泛的工具及功能库能够帮助大家轻松完成构建工作;物联网。Python将随着物联网技术的普及而进一步发展,目前Raspberry Pi等新型平台已经将其作为开发基础。弊端:速度。作为一种解释型语言,其速度往往低于编译语言;移动。Python在移动计算领域的表现比较糟糕。利用Python开发的移动应用非常罕见;设计。Python语言在设计上存在一些问题,其属于动态类语言,因此需要进行更多测试且会带来某些只在特定运行时出现的错误[3]。

三、编程语言教学方法思考

(一) 理论教学和实践教学要有效结合

针对学生的特点与基础, 以培养思维和应用能力, 增加可接受度为目标, 突破传统, 锐意创新, 采用大众化、通俗化、多元化的案例教学方法, 形成了以“案例”带动知识点并贯穿整个教学过程的。具体来说就是, 在讲授编程语言的过程中,首先由任课教师将一次课或几次课的相关内容融合在一起编写一个或几个生动的程序实例。在讲授相应的内容之前, 先给同学们演示实例, 引起他们的学习兴趣, 然后再讲授相应的知识点。结合所讲授的计算机语言可以引入一些典型问题。在讲授相应问题解法时, 可以结合同学们之前学过的相关课程的知识点, 如数据结构中的链表、特殊矩阵、排序等, 使同学们在学习编程语言的同时, 将从前所学的课程融会其中, 从而激发学生学习兴趣, 锻炼动手能力, 熟练语言的使用,提高编程技巧。

(二) 采用多种考试方式

考试内容应反映学生基本理论和基本技能的掌握情况, 以及分析和解决问题的综合运用能力情况, 而不是课堂教学内容的简单重复。要有意识地培养学生的创新意识和创新能力, 使考试真正能够对学生知识、能力、素质进行全面测试评价, 从而促进学生平时的学习。期末考试的成绩由理论考试 30 分, 上机考试 30 分, 实验 30 分, 平时 10 分四部分组成。理论考试在期末进行, 卷面满分 100分, 计算总分时乘 30 %。上机考试在期末进行, 让学生在计算机上编写程序, 满分 30 分。考虑到上机考试覆盖面有限, 并且为了突出动手能力在学习中的重要性, 对于实验成绩的评定, 我们可以在平时的课堂上给同学们陆续留10 道编程题, 学生可以任选 5 道题, 即留即做, 做完老师检查。通过学生的演示及对老师提出问题的回答来判断该生是否能独立完成、完成质量、对相应知识点的理解情况, 按每题 6 分由任课教师给出分数, 最后算出 5 道题的总分作为该生的实验成绩。对于平时成绩, 考虑该生的平时情况给出。这样的考试方式可以既全面考察学生对知识的掌握情况, 又突出了重点, 而且可以有效提高学生的动手能力[4]。

(三) 教学要与时俱进

教师要了解软件行业发展的最新动态和一些新兴的热门职业的从业要求, 将相关内容介绍给学生们。例如, 我国软件外包服务市场经过几年的发展, 规模高速增长, 实力显著增强, 在国际市场上的知名度也越来越高。中国软件行业协会认为, 一方面欧美等国家出于规避风险及降低成本的考虑, 开始把某些项目向中国转移; 另一方面国内软件外包服务商近几年开始把触角延伸到国外, 并通过收购、设立分支机构等策略“走出去”, 在这一行业中尤其活跃的风险投资商将为服务外包的发展增加推动力, 而上市也已经成为许多主力软件与服务外包服务商的近期重要目标。

四、总结

在教学中, 要有效的加入与就业相关的最前沿的咨讯, 提高同学们学习的主动性、目的性, 增强他们对未来就业的自信心, 让他们认识到从事计算机行业是有发展有前途的。这就要求任课教师必须了解软件行业及就业的最新动态, 例如上网查资料、参加培训学习、参加人才招聘会、去软件行业发展快的地区去考查等。

另外,国家现在大力推进劳动准入制度和职业资格证书制度, 这意味着我们的学生若想毕业后迅速就业, 就必须在毕业之前经过职业培训, 并取得相关的职业资格证书。这样当我们的学生毕业后不仅有学历证书, 还有一个或多个软件领域的职业资格证书。作为任课教师, 我们应该参加相应的考试, 在取得证书的同时, 深入细致地了解与资格考试相关的内容, 从而进行课堂教学的改革, 有针对性的强化实践锻炼, 强化职业技能认证的训练, 紧密联系用人的第一线。

[1] 史广.高校计算机语言类编程教学特点及阶段探讨[J].吉林省教育学院学报,2016,32(3):46-48.

[2] 谷灵康.《C#语言》教学方法研究[J].电脑知识与技术,2015,11(24):84-86.

[3] 嵩天,黄天羽,礼欣. Python 语言:程序设计课程教学改革的理想选择[J].中国大学教育,2016(2):44-47.

[4] 姚琳,汪红兵,张敏,等.程序设计比赛对程序设计语言教学的启发[J].计算机教育,2015(2):103-106.

Discussion on Choice and Teaching Methods of Programming Language in Software Engineering Major

GU Lingkang

(CollegeofComputerandInformation,AnhuiPolytechnicUniversity,WuhuAnhui241000)

With the development of computer technology, a variety of programming languages appear. Especially with the rapid development of software engineering, the choice of programming language and the reform of teaching methods become more and more urgent. In order to meet the needs of employment, we should choose the right programming language, and meanwhile combine the theory teaching with practice teaching effectively. The teaching should keep pace with the times, so as to cultivate the excellent programming personnel that meet the needs of the society.

Software engineering; programming language; teaching reform

2016-12-06

国家自然科学基金(项目编号:61300170);安徽省自然科学基金(项目编号:KJ2015A311);安徽省级自然科学研究(项目编号:TSKJ2014B11)

谷灵康(1981-),男,安徽临泉人,硕士,讲师,研究方向为计算机视觉、图像处理与识别,电话:1505327292。

G642

A

1671-4733(2017)01-0090-04

10.3969/j.issn.1671-4733.2017.01.028

猜你喜欢

编程语言编程语言
基于JavaScript编程语言之 闭包技术在焦点轮播上的应用
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
语言是刀
纺织机上诞生的编程
Java编程语言的特点与应用
让语言描写摇曳多姿
浅谈不同编程语言对计算机软件开发的影响
累积动态分析下的同声传译语言压缩