丁凯孟 吴杰 陈文君
摘要:新工科要求非计算机专业的学生具有较高创新能力,能够对复杂问题进行预测、模拟和求解,因此程序设计课程的重要性更为凸显。但是,非计算机专业学生面临着程序设计基础相对薄弱等问题。本文结合新工科理念与Lua语言的优势,针对非计算机专业的程序设计课程中面临的问题,从教学目标、教学内容和教学方法三个方面探讨了“新工科”工程教育模式下非计算机专业开设Lua语言程序设计课程的问题。
关键词:Lua语言;新工科;非计算机专业;程序设计
中图分类号:TP311 文献标志码:A 文章编号:1674-9324(2018)49-0252-03
一、引言
随着新技术、新产业等新经济的迅猛发展,为深化工程教育改革,推进新工科的建设与发展,教育部在2017年上半年发布了《关于开展“新工科”研究与实践的通知》。新工科旨在培养多元化、创新型的卓越工程人才,以应对新一轮科技革命与产业革命。新工科是有别于传统工科的学科交叉产物,与传统教学模式最大的区别在于其更加注重对学生实践能力的培养,要求学生具有对复杂问题进行预测、模拟和求解的能力。
新工科强调以信息化带动工业化,要求学生掌握更高的创新能力、跨界整合能力,尤其注重信息技术、电子技术等新技术与传统工业技术的紧密结合。在此背景下,计算机程序设计能力的培养对于非计算机专业学生愈发重要:一方面,程序设计能力的培养能够锻炼学生的逻辑思维能力、实际问题的分析能力;另一方面,新工科强调学科的实用性、交叉性与综合性,程序设计能力的培养能够提高非计算机专业学生的信息处理水平与计算机应用能力,方便学生进行跨领域的研究实践。
但是,很多非计算机专业的学生并没有掌握较为全面的计算机基础知识,对计算机程序设计的相关概念也较为模糊,再加上受学时限制,因此,系统学好一门编程语言对于非计算机专业的学生难度相对较大。此外,不同学校、不同专业对程序设计的要求也不尽相同。所以,程序设计课程的教学改革关键就在于选择一种既简单易学,又能够方便地结合不同专业领域的程序设计语言。Lua语言具有简单易学、方便扩展功能等优点,能够很好地满足上述要求。
本文针对非计算机专业程序设计课程中面临的问题,结合新工科理念与Lua语言的优势,探讨新工科工程教育模式下非计算机专业开设Lua语言程序设计的若干问题。
二、非计算机专业程序设计课程面临的问题
由于新工科强调学科的实用性和交叉性,注重在传统工业技术上应用软件设计、信息通信等新技术,使得程序设计在非计算机专业的教学体系中占有重要地位。实际上,在计算机飞速发展的大背景下,我国高校普遍针对非计算机专业开设程序设计课程,所采用的程序设计语言以C语言、VB以及Java为主,但是,新工科背景下,上述编程语言存在一定局限性。
第一,C语言更接近计算机底层,开发出的程序更为高效。但是,C语言作为一种面向过程的语言,其语法晦涩严苛,程序编写过程中容易出错,一般需要较多时间用于调试代码。而且,C语言的数据类型相对不够完善,例如,缺乏布尔类型、时间类型等数据结构。此外,C语言开发需要程序员自行设计许多基本功能,工作量较大,难度也相对较高。
第二,VB也被国内很多院校作为程序设计课程的主语言,其优势在于难度较低、面向对象、可视化的集成开发环境等。但是,VB仅适用于Windows系统,不具有跨平台性,具有较大局限性。而且,VB编写的程序代码运行效率低,速度相对较慢。更为关键的是,VB已经长期没有更新,难以适应时代发展。因此,VB不适合学生的长远发展。
第三,Java是面向对象的程序语言,具有很好的跨平台性、可靠性和安全性,主要用于网络应用程序开发。但是,Java本身重点关注代码复用性和可移植性,对于非计算机专业学生而言,工作后应用Java的场景较少,且学习成本也相对较高。此外,在动态性、开发效率等方面,Java不如Python、Lua等脚本语言。
总之,非计算机学生的专业各不相同,学习程序设计语言的目标有所差别,思维方式也相差较大。在新工科强调培养适应新时代、新技术创新人才的背景下,C语言、VB以及Java等传统教学语言过分强调语法,已经不能满足需要。
三、Lua语言概述
Lua语言是一种高效、轻型的脚本语言,几乎兼容所有的操作系统。和Python、Perl等脚本语言一样,Lua语言是一种解释类语言,不需要编译和链接,而且支持动态类型语言。Lua语言可以与其他语言相互调用,尤其是与C/C++整合,能够满足不同应用领域的需求。目前,Lua语言已经在游戏开发、图像信息处理、分布式控制与应用、生物信息学等领域中得到了较为广泛的应用。
(一)Lua语言的特点
与C/C++、Java等相比,Lua语言没有复杂的语法,与自然语言较为接近,学习成本较低。对于没有编程经验的学生来说,Lua语言较易上手,学生无需纠结零碎的语法细节和程序编写方式,能够更快地抽象问题并提出解决方案。而且,Lua有数量众多的扩展包,通过加载扩展包来实现不同的功能。此外,Lua还具有卓越的可扩展性:由宿主语言(C/C++、Java等)提供额外的复杂功能,再由Lua调用相应的接口。Lua语言还具有很好的跨平臺性,几乎可以在所有操作系统和平台上编译、运行。
与Python、Perl等脚本语言相比,Lua语言同样具备很多优点。
1.更为小巧。Lua本身较为小巧,Lua5.3的所有C源码只有2.4万行,编译后的二进制包只有200KB;而Python的C源码则高达54万行,即使不含Module也有约17万行C源码。
2.更为高效。与Ruby、Python、JS等其他脚本语言相比,Lua运行时速度更快,而且占用内存较少。
3.更加简单易学。Lua语法基础比较简单,比较容易上手。与Python相比,Lua不需要强制用空白符作为语句缩进。
总之,与Python、Perl等其他脚本语言相比,除了第三方模块没有Python那么丰富外,Lua几乎具有它们的全部优点,而且更为高效。
(二)Lua语言的基本数据类型
在Lua语言中,变量在使用前不需要提前声明,直接为变量赋值即可,其类型决定于用户赋值的类型,而且变量的类型可变。
Lua的基本数据类型有6种:nil、boolean、number、string、function和table。
1.nil类型:表示没有任何有效值,给一个变量赋值为nil,相当于释放该变量。
2.boolean类型:该类型与C++和Java中的bool类型相似,只有两个值true或false。
3.number类型:默认情况下,表示双精度类型的实浮点数。
4.string类型:即字符串类型,可以由一对双引号表示,也可以由一对单引号来表示。
5.function类型:函数类型,可以由C语言或者Lua编写。
6.table类型:关系表类型,可以当作数组使用,数组的索引可以是数字或者是字符串。
四、Lua语言应用于非计算机专业教学中的探讨
新工科背景下的教学改革,首要目标是促进学生全面发展,在此基础上,还要满足学生未来发展的需要。Lua语言能够很好地满足新工科背景下非计算机专业的程序设计课程的教学改革要求。
Lua语言优点虽多,但其本身却不是一种为大众熟知的编程语言,而且使用Lua语言的程序设计教学经验相对匮乏。本文结合Lua语言的优势,从以下几个方面进行相关探索。
(一)明确教学目标
对于非计算机专业的学生而言,编程能力的培养不仅是为了提高学生的计算机应用能力,还要培养学生的编程思想以及分析问题、解决问题的能力。选择Lua语言作为非计算机专业的程序设计教学语言,优势在于Lua的学习成本较低、运行效率较高,Lua的功能更容易扩展,以解决具体行业面对的实际问题。
但是,不同工科专业对程序设计要求掌握的深度不同,因此,教学目标需要明确。Lua语言程序设计的教学目标包括以下几个方面。
1.使学生掌握Lua语言的基本概念与基本语法,包括数据类型、数值运算、语句块、函数等。
2.使学生掌握基于Lua语言的常用算法,以排序问题为例,学生应掌握至少一种或几种基本的排序算法,如冒泡排序、选择排序等。
3.训练学生对一般问题的建模能力,并能够使用Lua语言解决问题。
4.结合专业特点进行教学,使学生掌握第三方类库的使用,如通信工程专业重点介绍科学计算模块库,建筑学专业重点介绍计算机辅助设计类模块。
5.使学生掌握通过C/C++等宿主语言扩展Lua功能的能力。需要说明的是,不同的工科专业,可以视专业情况而决定是否需要达到这一教学目标。
(二)结合具体专业来规划教学内容
Lua程序设计的基本教学内容包括以下方面。
1.基本数据类型,包括nil、boolean、number、string等。
2.程序流程控制,包括顺序、选择、循环等控制结构。Lua语言中的选择结构包括if语句、if...else语句、if嵌套语句等,循环结构包括while循环、for循环、repeat...until循环以及嵌套循环等。
3.table,包括table的构造、table操作、table连接、table插入和移除等。
4.函数,包括函数定义、函数的参数传递与返回值、变量作用域等。
5.Lua模块与包,包括加载模块、加载机制等。
6.Lua文件I/O,包括简单模式与完全模式。
关于Lua语言程序设计的教学学时,不同学校、专业的要求不同,学时也可以不同(如32学时或者48学时)。但仅仅利用上课时间并不能达到最佳的学习效果,所以教师应当结合专业实际需求安排一定的编程习题或者相关案例,供学生在课下进行编程练习。
(三)教学方法
Lua语言与传统的C语言、Java不同,语法相对简单、更容易入门,所以教学过程中无需过分强调语法,可以适当增加与专业有关的编程实践,使学生能够较快掌握解决专业问题的能力。在实践过程中,教师应当对涉及的基础概念、方法进行及时总结,以夯实理论知识。
在教学过程中,教师应当着重培养学生的编程思维,鼓励学生寻求更简单、更高效的方法来解决问题。此外,教师可以充分分析专业需求与特点,以学生在专业学习中遇到的问题为切入点,引导学生积极思考并解决问题,从而激发学生学习Lua语言的兴趣。
由于很少有高校开设Lua程序设计语言的相关课程,所以可供直接借鉴的教学经验相对较少。但是,作为一种脚本语言,Lua语言与Python较为相似,语法都比较简单、干脆,都具有众多扩展模块,且都能够通过C/C++等高级语言扩展功能,因此,Lua语言程序设计课程也可以借鉴Python程序设计的相关教学经验。
五、小结
新工科的目标是培养适应新时代、新技术的现代化工程创新人才,在此背景下,培养非计算机专业学生的编程思想以及分析问题、解决问题的能力具有重要意义。本文在讨论了Lua语言的特点和优势后,对Lua语言在程序设计教学中的实践进行了探讨,希望能够促进Lua语言在非计算机专业的程序设计教学中的推广和应用。
参考文献:
[1]钟登华.新工科建设的内涵与行动[J].高等工程教育研究,2017,(3):1-6.
[2]宋余慶,陈权,刘哲,朱轶,潘天红,刘会霞.新工科背景下工程创新人才国际培养的探索与实践——基于“双跨”团队体验混合式学习模式的建构[J].高校教育管理,2018,12(3):102-108.
[3]仲晓芳,庞胜楠,尹百慧.面向非计算机类专业Python编程教学设计研究[J].无线互联科技,2017,(18):82-83.
[4]赵广辉.面向新工科的Python程序设计交叉融合案例教学[J].计算机教育,2017,(8):23-27.
[5]杨杰.Lua——以总统为名的移动开发语言新贵[J].电脑与电信,2014,(4):46-48.