闯跃龙
(台州学院 数学与信息工程学院,浙江 台州 318000)
当前,我国高校非计算机专业的入门编程课程依然以C语言和VB为主[1]。根据统计,绝大部分工学类专业都选择了C语言和VB作为编程类通识课程必修课,还有部分专业如电子信息工程、信息管理等选择C语言作为专业必修课程。由此可见,对于非计算机专业学生来说,编程入门课程的第一选择无疑是C语言或VB。
然而,在信息技术快速发展的大环境下,以C语言和VB为主的面向非计算机专业的编程入门课程多年来缺乏变化,无法应对日新月异的技术变革和社会需求。近年来,随着云计算和大数据技术的快速发展,Python以其易学、易用和易扩展等优点火爆起来。近年来,国内外许多高校(尤其是国外高校)相继开设了Python相关课程,并取得了不错的教学效果[2-3]。
高校非计算机专业的自身特点可以从专业和学生两个方面进行分析。
当今科技正处在飞速发展的阶段,计算机技术已经渗透到各行各业,其应用范围已远超科学计算的范畴。因此,程序设计不仅仅是计算机专业学生需要学习并掌握的一门课程,对于许多非计算机专业来说也是非常重要的一门课程。当然,不同专业对程序设计的需求也各不相同。除了个别专业以外,绝大多数非计算机专业对计算机编程的要求并不高,一般来说只需了解基本知识,掌握基本代码和编写步骤即可。在实际应用中可以快速利用工具实现简单开发。在这种背景下,VB语言脱颖而出,成为绝大多数非计算机专业的首选。此外,处于自身的需求,部分专业也把C语言作为程序设计课程的首选。
除了专业自身的需要,还要考虑非计算机专业学生自身的特点[4-5]。大多数非计算机专业学生计算机基础较弱,学时有限,学习内容繁杂,抽象的程序设计课程对学生造成了极大的学习压力。现实的问题是,对于大多数学生来说,大学期间学习的编程知识并没有在以后的工作中得以应用。非计算机专业程序设计课程教学与实际使用的矛盾是当前亟待解决的问题。所幸,近年来名为Python的编程语言火爆起来,并在各个行业都得到了广泛的应用。
如果把人和计算机作为悬崖的两端,则编程语言就是跨越这个鸿沟的工具。编程语言种类多多,不同类型的语言最大的区别就是更贴近计算机还是人。C语言与VB和Python相比更加贴近计算机一端。这与C语言诞生的目的有关。C标准委员会撰写的C语言基本原理中有一句话:“Make it fast, even if it is not guaranteed to be portable.”这句话奠定了整个C语言的设计与发展道路:一切以机器为核心。因此C语言代码有着简洁紧凑和执行效率高的特点,并广泛应用于系统软件、嵌入式软件等开发。然而,随着计算机软硬件的快速发展,计算机向不同领域进行渗透,众多学科都可以利用计算机进行数据处理,并冠以计算之名。
这样的前提下,C语言的劣势就凸显了出来,主要表现如下:
(1)语法过于复杂、灵活。C语言的语法灵活,优点是利用C语言几乎可以高效地完成任何计算任务,缺陷则是语法需要掌握的细节过多。这就导致了C语言学习难度大,代码的开发难度较高,开发周期较长。对于非计算机专业的学生来说,这些问题极大限制了对语法的掌握与应用,不利于编程学习兴趣的培养。从笔者的教学经历来看,对于绝大多数非计算机专业的学生来说,C语言程序设计始终是一门晦涩难懂的课程。
(2)表现形式不唯一。对于C语言来说,同样功能的一个模块(不论是简单或复杂),不同的人会写出几乎完全不同的代码。这一方面是由于语法本身过于灵活造成的,但另一方面,也是C语言表现形式多样的原因。代码表现形式不唯一,直接导致的问题就是代码的可读性较差。可读性的降低使得代码的调试、分享难度加大,而表现形式唯一正是Python的最大特点之一。
VB源自早期的Basic,主要由Microsoft公司支持和维护,用于开发Windows系统中的视窗应用。VB的教学内容主要包括窗体对象、按钮、文本框、图形界面、事件响应等。由于VB语言有着“所见即所得”的开发特点,继承自VB的VBA(Visual Basic for Applications)支持面向Microsoft的Off i ce编程,如Word、Excel等,对于许多非计算机的专业来说有着一定的实际意义。
然而,VB最大的问题就是平台依赖性。如前所示,VB由Microsoft公司提供支持与维护,只能在Windows平台下工作。此外,由于Microsoft公司的不开源的政策,VB的开源项目少之又少,第三方的代码库也不多。以上这些因素都严重限制了VB广阔的应用前景。
相较于以上两种语言,Python可以说是集两家之长,同时又规避了两者的缺陷。首先,相比于C语言,Python更贴近人这一端,语法更加人性化。这就使得该语言易学易用。Python从一诞生,它的核心思想就是一切以用户为中心,以用户的工作效率为中心。Bruce Eckel在2001年做的著名的“Why I love Python”讲座中提到Python一个核心的特点就是“It doesn’t value performance over my productivity”。可见,Python的重点就是提高用户的体验。此外,Python语言的表现形式具有一致性的特点,强制采用缩进的形式表现代码的层次结构。这样就保证了代码的可读性,方便代码的阅读、调试和分享。其次,相比于VB,Python具有跨平台、开源的优势。Python社区非常活跃,截止到2017年7月,根据Python官方的统计,共有超过11万的第三方扩展库。海量的扩展库保证了Python广泛的应用范围。
为了进一步比较3种不同编程语言的特点,笔者采用表格的形式,分别从编程环境、语法和现有教学资源等3个方面入手进行比较,见表1—表3。通过表格可以发现,Python无论在各个方面都有着其他语言所不具备的优势。
不同于计算机专业的学生,非计算机专业学生的计算机或数学水平参差不齐,不同专业学生对于编程语言的学习能力各不相同。直接采用C语言作为编程入门课程,从实际的教学效果来看并不是十分理想。面对庞杂的C语言特性,学生很容易失去学习编程语言的兴趣。相比C语言,VB的情况要好一些。受益于它的所见即所得的编程方式,学生对于这门语言的掌握程度要远好于C语言,但VB的应用范围相较于C语言要小得多,其平台依赖性等进一步限制其应用性。那为什么选择Python作为编程课程呢?因为它易学易用、开源、免费、跨平台和面向对象。Python的易学易用可以保证学生把注意力从复杂的语法学习,转移到对实际问题的分析和思考上,而Python海量的扩展库保证几乎任何专业的学生能找到适用本专业的库资源,可以极大提高分析问题和解决问题的效率。
表1 开发环境对比
表2 语法对比
表3 现有教学资源
不同专业学生的背景不同,对编程语言的需求也千差万别。因此,面对非计算机专业学生的编程语言教学重点放在Python编程语言的基础语法上,需要花大量的时间来学习基础的编程知识。此外,长时间的静态教学会严重影响学生的学习兴趣。为了避免这个问题,在整个教学过程中尽可能使得学生处在分析和思考问题的状态,提高学生独立解决问题的能力。为了达到该目的,整个教学过程要以问题为中心,依靠提出问题—分析问题—解决问题来进行Python语言基础知识的教学。其次,不同专业的学生对编程语言的应用需求也各不相同。为了能切实地提高学生的编程能力,方便学生的实际应用,教学内容应该针对不同的专业有所调整,结合本专业的实际情况设计教学内容[6]。以台州学院信息管理与信息系统专业为例,该专业的培养目标为:掌握信息管理基本理论,掌握管理信息系统的分析方法、设计方法和实现技术,具有信息组织、分析研究、传播与开发利用的基本能力。因此,针对该专业的Python授课,除了基础知识外,重点应放在基于Python 的数据挖掘上,其知识点主要应包括:数据的可视化、利用机器学习算法实现基本的数据处理(分类、聚类、回归等)和网络数据的爬取等。
综上所述,Python语言的教学内容分为两个层次:基础知识和综合训练。基础知识主要讲述了Python语言的基本知识点,通过以问题为中心的方式进行授课。综合训练部分要针对不同的专业进行调整,能真实、准确地反应不同专业的需求。
综上所述,相比于C语言和VB,Python有着易学易用,跨平台和易扩展等优点。同时,Python有着丰富的扩展库,这就使得Python有着广阔的应用范围。因此,采用Python语言作为非计算机专业的编程入门课程,既帮助学生了解编程的基础知识,又具有着一定的实用意义。