适合高中生计算思维能力培养的程序设计语言初探
2016-12-06张慧妍
张慧妍
摘要:高中信息技术课程的培养目标是提高学生的综合信息素养,与大学计算机科学教育相衔接。本文分析了目前高中教育阶段程序设计课程在编程语言选择和计算思维能力培养方面的不足,提出了一种适合高中生学习编程概念的Alice可视化编程语言,探讨了使用Alice语言培养高中生初步计算思维能力的可行性和实践方法。
关键词:程序设计语言;衔接教育;Alice编程;编程概念;计算思维
中图分类号:G632 文献标识码:A 论文编号:1674-2117(2016)22-0019-04
引言
2006年3月,美国卡耐基梅隆大学计算机科学系主任周以真教授给出了计算思维的定义。她认为,计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为,包括了涵盖计算机科学之广度的一系列思维活动。[1]计算思维活动是和“读、写、算(Reading, writing and arithmetic——3R)”同等重要且适合每个人的“一种普遍的认识和普适的技能”。
目前,包括美国、英国在内的众多国家,信息素养与计算思维能力培养已经成为中小学信息技术教育的新趋势和重要教育内容。计算思维在我国也引起了越来越多教育教学者的关注,很多学者提出应强化对大学生及中小学生计算思维能力的培养。在高中阶段,培养高中生的计算思维就是要培养他们“像计算机科学家”那样去思考问题,并将这些问题渗透到信息技术的每一个角落。美国ACM计算机课程IEEE-CS2001总结了学习信息技术的四种方法,认为“编程先行(programming-first)”是一种行之有效的方法。[2]而程序设计语言是程序设计(编程)最主要的工具之一。因此,本文以程序设计语言为切入点,针对目前我国高中教育阶段程序设计作为非核心课程的现状,探析一种既适合高中生学习编程概念又适合高中生计算思维能力培养的程序设计语言。
一种适合高中生的程序设计语言
1.程序设计语言的选择
目前,我国高中信息技术课程学习的编程语言主要是Visual Basic,而针对高中生的信息技术竞赛多采用C++或Java语言。虽然这些语言都适用于学习面向对象的编程概念,但基于目前高中信息技术课的教学现状以及高中生的综合信息素养,学生学习这两种语言的整体兴趣并不高,而且对许多编程概念只“知其然,而不知其所以然”,求解实际问题的能力也不甚理想。这种局面与程序设计语言的选择有很大关系。首先,Visual Basic和C++/Java是目前高校学生学习的主流程序设计语言,语法学习难度较大,而且语言本身的抽象程度也并不完全符合高中生的认知能力,不适合高中与大学计算思维能力培养的衔接教育。其次,虽然这些语言都能够提供可视化的编程环境,但程序代码本身的文本编写模式和文本输出模式很容易让学生认为编程是一种枯燥无味的事情,从而影响他们深入学习编程的积极性。鉴于此,本文从以下四个方面选择程序设计语言。
(1)对象先行
从广义上看,程序设计语言主要有命令式、面向对象、函数式、逻辑式和并发式等范型,而目前高校使用的主流程序设计语言是面向对象程序设计语言,如C++/Java。因此,为了更好地满足高中与大学计算思维能力培养的衔接教育要求,笔者选择了面向对象的程序设计语言。
(2)高度抽象
基于高中生的综合信息素养和认知能力,选择的程序设计语言应是一种比C++/Java更高抽象层次的可视化编程语言。该语言应语法简单,操作便利,能极大减轻学生学习语法的负担,提高学生使用程序设计语言与计算机进行交流的能力,从而激发他们学习编程的动力。
(3)学习编程概念
在满足高度抽象的基础上,为了初步培养学生的计算思维能力,这种程序设计语言应不影响学习基本的编程概念,如类、对象、封装、方法、事件与事件处理、变量、表达式、控制语句、递归和并发等。
(4)培养计算思维
基于高中生的认知能力,能够通过编程培养高中生用程序设计语言分析问题、解决问题的能力,从而逐步训练计算思维是选择这种程序设计语言的最终要求,即能够充分呈现计算思维的思想或计算思维的核心概念。
2.Alice——面向对象的三维可视化编程语言
Alice(http://www.alice.org)是Carnegie Mellon大学免费提供的一个可以用来学习设计与编程的面向对象的可视化编程语言。用Alice学习编程就是建立自己的虚拟世界,在其中添加各种三维模型(Alice已提供大量预定义的三维模型),然后编写程序(类似于电影剧本)指挥这些三维模型做出所需的动作,从而在虚拟的三维世界中快速地创建故事、游戏或类似卡通的交互式动画程序(如上页图1、图2)。Alice是一种适合高中生学习面向对象编程概念的高度抽象的可视化编程语言,能很好地满足高中与大学学习编程的衔接教育要求。
(1)满足对象先行
Alice语言的最新版本是完全面向对象的。在Alice创建的虚拟世界中,每一个三维模型(人、动物或建筑等)都是一个可见的对象。此外,Alice本身是使用Java语言编写的,用Alice编写的程序最终会被转换成Java程序运行。因此,学习Alice语言可为将来进一步学习Java或C++语言奠定良好的基础。
(2)满足高度抽象
Alice设计了一个拖拽式的可视化用户界面,学生可以在屏幕上拖动程序中的组件(如对象、方法、语句等),而不会出现语句结构或标点符号等语法错误。一个使用Alice的程序员更像是一个导演或一个木偶操纵者,通过鼠标拖拽屏幕上的语句和对象就能编写一个交互式程序,且运行过程具有即时反馈性。从程序设计语言的角度来看,Alice是一种比C++/Java抽象层次更高的程序设计语言,极大地提高了学生与计算机的交流能力,因此更容易激发他们学习编程的兴趣与欲望。
(3)学习编程概念的极佳选择
学习编程实际上是学习怎样合理地安排一系列的指令从而实现一个任务。Alice虽然是一种高度抽象的可视化编程语言,但并不影响学生学习和理解面向对象的基本编程概念,如类(class)、对象(object)、继承(inheritance)、方法(method)、发送消息(sending message)、控制结构(control structure)、运算符(operator)、表达式(expression)、事件处理(event handler)等。Alice程序是由很多行描述对象动作或修改对象属性的代码组成,代码可以组织在Do in order和Do together模块中,以此来告诉Alice哪些动作是顺序发生的,哪些动作是同时发生的。此外,由于Alice编程是一种基于剧情或故事的可视化程序设计方法,能把抽象的编程概念用形象的方式呈现给初学编程的人,因此它更符合高中生的认知能力。
使用Alice编程培养初步的计算思维能力
利用Alice编程熟练地掌握计算机科学的基本编程概念是高中生逐步培养计算思维能力的一个有效途径。ACM前主席Denning教授系统地总结了计算的7类原理,即计算、通信、协调、记忆、自动化、评估和设计。每个类别都从一个独特的视角去观察计算本身,并且在计算领域具有“普遍性”“复现性”和“广泛影响性”,它们构建起一个理解计算内涵的框架。教育部高等学校大学计算机课程教学指导委员会编制的《大学计算机基础课程教学基本要求》从8个方面描述了计算思维(增加了“抽象”)。[3]笔者将Alice编程学习与这8个类别的计算思维表达体系建立了关联,如下页表所示。
结论
本文针对高中生的综合信息素养和认知能力,初步探析了Alice这种适合高中生学习面向对象编程概念和初步培养计算思维能力的三维可视化编程语言。计算思维核心概念的培养需要经历长期的训练和塑造过程,不可一蹴而就。实践表明,通过Alice编程熟练地掌握计算机科学的基本编程概念不仅可以为高中生培养初步的计算思维能力提供一个有效途径,而且也能为其未来到大学深入学习C++/Java语言奠定良好的教育基础。