嵩天 黄天羽 礼欣
摘要:面向计算思维的教学改革需要理解计算思维的时代性,即计算思维是基于计算机技术的科学思维,教学改革要符合并适应计算机技术的发展阶段。Python语言是目前最接近自然语言的通用编程语言,近年来在美国大学广受欢迎,并取得了良好的教学效果。面向非计算机专业本科生开展Python语言教学是程序设计课程发展的重要历史契机,有助于进一步释放师生活力和创新热情,全面提升教学质量,使学生有机会掌握一门终身受用的程序设计语言。
关键词:高等教育:教学改革;Python语言:计算思维:程序设计;非计算机专业
一、计算思维培养视角下的程序设计课程
1.程序设计课程教学内容分析
我们选取非计算机专业本科生程序设计课程最主要的教学内容:C,Java,VB三种编程语言,以及本文建议开设的Python语言,逐一分析这些编程语言所阐述的计算思维外延。
(1)C语言。我国大学针对非计算机专业普遍开设C语言程序设计课程,其实际教学内容围绕数据类型、指针、内存、字符操作等开展。这些内容主要诠释“计算机系统结构时代”的计算思维外延,即计算机体系结构(计算机工作原理)的抽象和自动化。通过这种计算思维的培养,能够让学生掌握程序的高效运行模式。
然而,由于非计算机专业同学缺少计算机体系结构相关知识,也没有专业需求,即使通过C语言考试,也很难在后续计算机应用中使用该语言解决面对的计算问题。C语言更适合的教学对象是需要对程序运行效率依赖性高的群体,主要是计算机及部分信息类专业学生。
(2)Java语言。由于该语言是面向对象语言,其实际教学内容围绕类、对象、封装、继承、多态、接口等面向对象方法开展。这些内容主要诠释了“计算机网络时代”的计算思维,体现在计算机网络对异构性的支持(跨平台)和对鲁棒性(运行时)的需求。从计算思维本质角度,Java语言抽象了问题中的主体边界和主客体关系,通过面向对象概念,开展高效的代码复用。
同样,非计算机专业同学的培养目标并非专业程序员,并不需要关注代码复用性和可移植性,且Java语言开发功能很少直接应用在个人应用中,学生学习后缺少应用场景,很难持续使用。Java语言适合的教学对象是需要编写高复用性或高可靠性代码的群体,主要是计算机专业学生。
(3)VB语言。该语言发展自早期的Basic语言,主要由微软公司支持和维护,用于开发Windows系统中的视窗应用。VB语言实际教学内容围绕窗体对象、按钮、文本框、图形界面、事件响应等开展,这些内容诠释了“计算机视窗”时代(与“计算机网络”时代在时间上重叠)的计算思维,体现在根植于视窗的语法设计体系。VB语言抽象了交互逻辑和响应关系,以及自动化逻辑间交互方式。
由于VB语言所开发的程序所见即所得,且继承VB语法的VBA(Visual Basic for Applica.tions)语言能够支持Word及Excel等办公软件的编程扩展,对非计算机专业同学有一定实际作用,因此,该语言的教学效果相对较好。VB语言最适合的教学对象是需要编写视窗应用的群体,主要是计算机及信息类专业学生。然而,必须看到,VB语言及后续的VB.NET所开发程序仅限于Windows系统,属于微软公司专属商业开发工具,语言使用具有较大局限性,应用面狭窄。
(4)Python语言。这是一门发展了近30年的编程语言,是目前美国大学最受欢迎的程序设计语言。Python语言实际教学内容是分支、循环、函数等基本的程序逻辑关系及功能强大的函数库应用,它是目前最接近自然语言的通用编程语言。该语言只关心计算问题的求解,其轻量级的语法和高层次的语言表示表达了应用计算机解决问题的计算思维理念。
Python语言抽象了问题及解决方案,自动化问题求解,是“复杂信息系统时代”利用计算机解决问题最直观的表达工具。从北京理工大学和美国多所高校的实际教学效果看,Python语言适合的教学对象是需要利用计算机解决各类计算问题的群体,这恰是大学程序设计课程的教学目的,涉及的本科生包括计算机专业和非计算机专业学生。
2.面向本科生开设Python语言的建议
表1汇总了4种程序设计语言的计算思维外延,从计算思维“抽象”和“自动化”两方面考虑,给出了各程序设计语言的理解。其中,“自动化”的狭义含义指程序逻辑的自动运行,而这里所指的“自动化”除了表达程序基本逻辑运行外,主要指通过“抽象”后,程序获得运行逻辑以外的收益。
与计算机专业理解并应用计算机系统结构、计算机网络等专业知识教学不同,面向非计算机专业计算机基础类程序设计课程的定位应该是:通过某一编程语言的教学传授利用计算思维解决一般计算问题的基本方法,并能够通过程序设计更好地利用计算机强大的计算性能。即:程序设计语言应该成为学生以计算思维将计算问题转变为计算机程序的有效手段。
计算机技术已经发展到“复杂信息系统时代”,普通计算机性能强大,对于一般计算问题,计算机的计算性能不再是求解问题瓶颈。因此,针对更广泛学生培养计算思维的实践,应该与计算机技术发展相适应,在这个技术“时代”更应关注问题的求解,超越对程序执行性能、代码高复用性或某一个特殊系统中视窗设计的关注,让学生真正掌握利用计算机解决计算问题的通用方法。
综上分析,结合计算思维时代性特点,我们提出面向非计算机专业本科生开设Python语言的建议,尤其是将Python语言作为首选语言开设。即使针对计算机专业本科生(“985工程”高校或“211工程”高校),我们也建议将Python语言作为第二门程序设计语言开设。对于以应用为主的计算机专业本科高校,更建议将Python语言作为首门程序设计语言开设。
3.开设Python语言的必要性和重要意义
从程序设计语言发展角度来看,高级编程语言的设计一直追求接近人类的自然语言。这样的高级语言需要两个基本要求:不存在自然语言中广泛存在的歧义性以及隐藏计算机系统的设计细节。C,Java,VB从各自角度抽象了程序设计,Python语言又进一步,提供十分接近人类理解的语法形式。应该说,Python语言发展了高级语言的表达形式,简化程序设计过程,提升了程序设计效率。
从计算思维培养角度,表1说明了已有教学语言的局限性和技术时代的关联性,即传统C,Java和VB语言过分强调语法并不适合非计算机专业学生。从传统应用技能教育向计算思维培养转变过程中,教学内容变革是重中之重。对于程序设计课程,选择适合技术时代发展的编程语言是显著提高培养效果的前提和基础。
从解决计算问题角度,传统c,Java和VB语言过分强调语法并不适合非计算机专业学生解决一般计算问题,Python语言作为适应新技术时代的轻语法程序设计语言,应该得到大学计算机教育领域的重视。
从上述三方面看,Python语言相比其他语言具有更高的教学价值。这一技术趋势也得到了国外众多大学的直接响应。以美国斯坦福大学为例,该校从2009年开设Python语言程序设计类课程开始,每年新增约5门课程,截止到2015年,该校年度开设22门与Python语言相关课程,并替换了之前的Java语言和部分专业的C语言课程。
随着大数据、云计算、网络空间安全等概念的兴起,当代信息社会要求大学生在具备操作计算机的基础技能外,还要具备一定的编程能力,用于解决工作和学习中遇到的各类非通用计算问题,理解并实践计算思维。这种信息时代深入发展的趋势为程序设计课程的内容改革提供了依据。
程序设计课程教学内容的变化是一个正常的技术更迭过程。从20世纪90年代开始,程序设计课程的教学内容经过几次较大变化,曾经广泛教学的Pascal语言、Fortran语言被C语言、Java语言、VB语言等取代。然而,从21世纪开始,程序设计语言教学内容基本没有改变,针对非计算机专业学生主要开设C语言、Java语言和VB语言。教学内容近15年的稳定并非因为上述教学内容达到了教学预期,而是受制于特定技术时代的历史局限性。我们认为,用Python语言替代传统教学内容是程序设计课程发展中的一个重要历史契机,这种教学内容的变化将在十年甚至更长的时间尺度上影响本科生计算思维和基础计算机应用能力的培养,值得高校领导和教师在认识上给予足够重视。
由于计算机技术在科学技术体系中的广泛性和基础性,将Python语言全面纳入大学计算机教学计划具有重要意义和深远影响。
Python语言解释器是开源的且开源协议限制很少,任何基于该语言编写的代码都符合我国“自主可控”的信息安全要求。
Python语言的易学易用和丰富的开源库将会给学生带来一个全新的程序设计认识,改变主观渴望学好编程语言但客观上学不会学不精的状况,有助于帮助学生学会一种终身受用的编程语言,进而帮助他们更好地利用计算机解决所面临的各类计算问题。
Python语言的高编写效率会进一步加快程序实现和修改节奏,降低程序错误率,缩短计算服务和产品的上市时间,提高国民综合生产效率。
在我国全面提高高等教育质量、广泛开展本科教学工程背景下,Python语言教学改革将会开启一个全新的程序设计语言教学时代,进一步释放师生活力和创新热情,全面提升教学质量。以Python语言教学为手段,将更容易开展计算思维教育教学活动,使学生在思维和技能两方面终身受益。
北京理工大学自2013年面向非计算机专业开设了全校公选课“Python语言程序设计”,取得了学生的高度认同,不及格率明显下降,学生反馈教学效果显著提高。鉴于对高级语言发展的理解和实际教学效果,我们建议国内高校普遍针对非计算机专业开展教学改革,开设Python语言程序设计课程。
二、Python语言和高校教学改革
1.Python语言特点
Python语言是Guido van Rossum在1990年开发的编程语言,至今已经有26年历史,目前最新版本是3.5.1。Python语言的全部实现都是开源的,遵循类似GPL但比其更宽松的开源协议,该协议可以允许不公开基于Python的修改版本,并将Python与其他软件共同在GPL下发布。Python语言的版权由PSF(PythonSoftware Foundation,Python软件基金会)持有,该基金会是一个非营利组织,通过接受捐款来推进Python语言的推广和开源事业。
Python语言是一个轻语法、弱类型的脚本语言。与C语言相比,Python语言没有指针、地址等计算机系统结构元素;对于变量无须定义直接使用,由解释器自动匹配;语言内部采用UTF-8编码实现,具有独立的字符串类型,简化了多语言文本的操作,对中文有良好的支持;通过使用变长列表而不是定长数组,兼容多种数据类型并灵活表达集合长度。
除了基本语法外,Python语言是一个脚本语言,即通过直接运行源代码来执行,这使得程序运行与源代码不可分离。对于非专业学生来说,源代码执行这种模式有助于代码维护、跨多个操作系统和交流代码设计与实现。
Python语言代码十分简洁,可以支持面向过程和面向对象两种程序设计方法,并不要求程序通过函数封装,代码行数可以缩减为c语言同样功能的1/5到1/10。以最简单的“HelloWorld”为例,Python语言的可运行源代码程序是:
Print(”Hello World!”)
C语言编写的程序需要引入mainfl函数,其可运行源代码程序如下:
#include
int main()
{
printf(”Hello World!\n”);
return 0;
}
此外,Python语言还可以编写图形界面程序,并且十分简洁。例如,下面所示程序可以绘制一条曲线,形成一棵树的形状:
from turtle import*
def tree(plist,l,a,f):
if>5:
ist=[1
for p in plist:
p.forward(1)
q=p.clone()
p.1eft(a)
q.right(a)
ist.append(p)
ist.append(q)
tree(1st,l*f,a,f)
p=Turtle()
p.color(”green”)
p.pensize(3)
p.speed(10)
p.1eft(90)
t=tree(【p】,110,65,O.6375)
输出结果如下图:
从上面两个简单实例可以看到,Python语言与C语言相比能够更好支持图形输出、具有更少的程序代码、更接近自然语言逻辑的语法等。同时,Python语言兼容面向对象和面向过程两种设计方式,不在语法和程序编写方法上过分限制。
2.Python语言的时代先进性
历史上出现的程序设计语言超过200种,然而,至今常用的语言不超过20种。Python作为当代常用的通用编程语言之一,具有很强的生命力,这种生命力主要来源于该语言的时代先进性,体现在以下三个方面:
第一,Python语言的设计本质。Python语言是目前最接近自然语言的高级语言,抽象程度高,代码编写高效,符合计算思维的时代性,适应当代计算机技术发展水平。Python语言更侧重问题求解,在计算机性能高度发展的今天,该语言更适合解决运算性能非关键的一般计算问题。
第二,Python语言的开源开放体系。目前,围绕Python语言形成了世界上最大的针对单一编程语言的开放社区,截至2015年11月,这一开放社区共提供超过68956个函数库,覆盖信息技术的众多技术领域。其中大量函数库编写质量很高,且同样开源,为使用Python语言编写程序提供了极大的便利和良好的学习平台。这种开源开放理念是推动计算机发展的原动力。
第三,Python语言的良好就业前景。云计算、大数据、移动互联网、创意游戏等给Python语言提供了良好的就业前景。表2列出了美国前两位在线招聘网站在美国加州,以及中国前两位招聘网站在北京、上海、广州、深圳等四个一线城市对Python语言、C语言、VB语言和Java语言程序员的需求对比。尽管这些就业需求数据并不能作为开设课程的依据,但可以作为对教学内容的一个评判维度。从职位需求的数量级别可以看出,在美国,Python语言和Java语言已经是程序员就业市场上很重要的两个分支,其中Python语言的市场需求约是Java语言的一半。然而,在国内,受限于大学教学的局限性和产业界对编程语言的信息洼地,Python语言程序员需求刚刚超过C语言和VB语言。这里需要说明的是,Java语言的就业需求几乎都是针对Android系统的APP开发,面向专业计算机程序员,比较单一。而Python语言就业需求更为广泛,包括数据分析师、运维工程师、产品测试等多个类别。
3.针对Python语言的教学开展
中国和美国在Python语言高校教学方面存在较大差距。其实,程序设计语言课程的教学内容很难达到教学目标的问题同样困扰美国大学教学,然而,近5年,美国大学通过引入Python语言在该课程的教学改革方面取得了显著进展。
以美国斯坦福大学为例,该校从2009年开设Python语言程序设计类课程开始,每年新增约5门课程,截至2015年,该校年度开设22门与Python语言有关的课程,尤其是针对非计算机专业学生,替换了之前的Java语言和部分C语言。美国综合排名前100的大学有超过70所在近3年开设了Python语言类课程。另外,有一批美国地方大学针对学生实际情况,开设了Python语言,从教学效果和质量来看,相关教改取得了较好效果。
在我国,截至2015年,开设Python语言教学的高校不超过10所,大多数以小班尝试为主。大部分课程面向计算机专业学生作为第二门语言学习,针对非计算机专业学生开设Python语言课程的教学实践还相当有限。
与教学开展类似,国内Python语言相关教材和参考书建设也十分有限。以美国和中国亚马逊网站数据为例,截至2015年11月,美国亚马逊有关Python语言的英文参考书为5 782本,相比,中文Python语言参考书仅为1 360本,而且其中绝大多数为国外参考书的翻译版,因此适合高校使用的教材亟待建设。
从教学开展和教学资源建设方面看,国内高校对开展Python语言教学的重要价值和意义认识不足,且缺少师资和参考教学体系。
北京理工大学从2013年开始开设了全校公选课,编写面向非计算机专业的Python语言教材,由高等教育出版社出版,同时,建立了整套教学体系和丰富的教学资源。2015年,主讲教师结合教学改革进展在“中国大学MOOC”上开设了“Python语言程序设计”课程,首次选课人数超过2万人,显示了Python语言较强的学习需求,MOOC课程为我们积累了更多教学经验。希望这些教学资源能够为国内同行开设Pvthon语言课程提供参考。
面向计算思维的教学改革需要理解计算思维的时代性,即计算思维是基于计算机技术的科学思维,教学改革要符合并适应计算机技术的发展阶段。本文从计算思维培养角度对传统程序设计课程的教学内容进行分析,提出了面向非计算机专业本科生开设Python语言的建议,阐述了该教学建议的时代选择性、紧迫性和重要意义。结合Python语言自身特点、就业需求数据、国内外开展教学现状和资源建设情况,分析得出;Python语言教学内容改革是程序设计课程发展的重要历史契机,将在十年甚至更长的时间尺度上影响本科生计算思维和基础计算机应用能力的培养。开展Pvthon语言教学有助于进一步释放师生活力和创新热情,全面提升教学质量,使学生有机会掌握一门终身受用的程序设计语言。
[责任编辑:余大品]