郑欢++陈勇
摘要:视觉化程序设计软件,有助于提升学习者的学习兴趣,降低学习者的学习困难。为此,信息技术与教育领域的研究者开发了许多程序设计软件,如Alice、Scratch、Lego Mindstorms、RAPTOR、Game Maker、Baltie、Jeroo等等,它们具有可视化和叙事性等功能,受到了社会的广泛关注。
关键词:程序设计软件;可视化;叙事性;功能
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)17-0089-04
Application and Development of Visual Programming Software
ZHENG Huan, CHEN Yong
(School of education, Shanghai Normal University, Shanghai 200234, China)
Abstract: Visual programming software can help learner improve interest in learning and reduce the difficulty of learning. Researchers in the field of information technology and education have developed a lot of programming software, such as Alice, Scratch, Lego Mindstorms, RAPTOR, Game Maker, Baltie, Jeroo etc, they have some functions of visualization and narrativity. And these visual programming software received a wide attention of the society.
Key words: programming software; visualization; narrativity; function
1 程序设计的发展历史
19世纪的50年代到60年代初,程序设计为手工艺式的,从而高德纳把程序称为艺术品。在19世纪60年代末到70年代初,随着程序发展规模的不断扩大,出现了软件危机。一方面需要大量的程序软件系统;但另一方面,程序软件的设计周期长,可靠性差。一直以来,程序设计的核心是:编写出的程序结构清晰,程序语言简单、易阅读、方便修改的程序设计软件。然而,在当时的程序设计模型中,也面临着错误随着代码的扩大而级数般的扩大的困难,甚至到了无法控制的地步。这个时候就出现了一种新的程序设计模型——面向对象程序设计,由此也产生了一批支持此技术的程序设计语言,比如C++或Java。现如今,程序设计软件又发生了许多变化,呈现出了以可视化与叙事为显著特征的发展趋势,受到了程序设计软件学习者的广泛关注。
2 程序设计软件的发展及其特征
由于像C++或Java类似的程序语言设计类软件所反映的教学内容过于抽象、概念复杂、语言编写规则繁多、编程容易出错等原因,导致了现在的学习者对程序设计的学习兴趣越来越低。在过去的十几年里,信息科学教育研究者发展了很多视觉化的程序设计软件,为学习者提供富有乐趣的程序设计环境,如:Alice、Scratch、Lego Mindstorms、RAPTOR、Game Maker、Baltie、Jeroo等,可以帮助学习者充满兴趣地学习程序设计。为学习者降低了学习程序设计的难度,让学习者在学习程序设计时能够获得学习兴趣,这也是现今可视化程序设计软件成功的关键所在。
随着社会的发展,视觉化程序设计软件已经在信息科学教育界中受到极大的关注。因为相比于以前程序语言编写抽象、复杂的教学软件,这些视觉化的程序设计软件具有以下的共同特征:
1)具有叙事和可视化功能的特征。能够吸引初学者的兴趣,便于进行教学活动;学习者在学习过程中可以收获很大的乐趣和信心,对学习者产生事半功倍的学习效果。
2)简单、易操作。它们并不过多地要求使用者需要过多的程序设计技能和知识,只需要使用者的想象力,并且通过点击和拖拽鼠标就基本上可以完成程序设计。
3)重在培养初学者的逻辑性思维。这些程序设计软件有助于提高学习者读对程序设计的认识,并培养初学者程序设计的逻辑性思维。
4)适用于初学者。这些视觉化程序设计软件最大的特征就是降低了初学者以前学习程序语言设计的难度,避免了对复杂的程序设计语言的编写。因为这些软件能把一些抽象概念形象地展现出来,为进一步学习难度较大的C++、Java打下良好基础。
3 视觉化程序设计软件的分类
虽然,现如今开发的程序设计软件都基本具有视觉化特征,但在某些功能上还是存在着差异。鉴于此,对程序设计软件进行了简单分类:
1)叙事功能的程序设计软件(narrative tools):让初学者通过程序设计语言编写一个故事情节,如:Alice,Scratch和Jeroo。
2)特定输出实现的程序设计软件(specialized output realizations):用非文本的方式提供程序操作的回馈,譬如多媒体等方式,如:Lego Mindstorms,JES。
3)流程功能的程序设计软件(flow-model tools):通过程序语言组件的连结,用以呈现计算的程序,如:RAPTOR,Iconic Programmer,VisualLogic。
4)分层语言的程序设计软件(tiered language tools):让初学者在进一步学习中,可以逐渐使用更复杂的版本,如:Baltie,ProfessorJ,RoboLab。
4 常用视觉化程序设计软件介绍
依照应用的常用性,针对目前适于教育领域中常用的程序设计软件进行简单的介绍。
4.1 Alice
Alice(http://www.alice.org)是由美国卡耐基·梅隆(Carnegie Mellon)大学开发的以学习者为中心的程序设计软件,也被称为3D交互式图形编程环境(3-D Interactive Graphics Programming Environment),其作用是让学习者在设计3D动画的同时学习事物转向的程序设计概念,适合初学者使用。Alice提出了这种支持面向对象程序设计的三维虚拟世界动画教学软件,具有叙事和可视化的功能。卡耐基·梅隆大学开发Alice的主要目标是:用以帮助更多的青少年学会如何在3D的环境下编写计算机程序,并希望在学习Alice这一软件的基础上,青少年能够学习更为复杂的Java和C++编程。
Alice最显著的特点就是支持图形化程序设计,并能够生成三维虚拟世界中的对象,然后可以将场景的设计同程序设计结合起来。Alice根据功能划分为5个区域(如图1所示):1)对象树。在这一区域中显示的是场景中出现的对象。2)World 窗口。把对象添加到这一窗口,可以进行场景设计。3)事件区。这一区域是对事件的响应而进行的编程。4)函数方法细节区。这一区域显示的是每个对象的属性、方法和函数。5)代码编辑区。通过把对象的属性、方法、函数拖拉到这一区域,然后根据提示,并自动生成相应的代码。Alice提供互动、立体的模拟环境,所有的物体都具有前后、左右和上下六个方向,并提供程序语法的标签,学习者不需要输入程序码,只要利用鼠标拖拽的方式将成式语法标签放到界面右下的程序编辑区即可完成程序设计编辑。
Alice系统为学习者提供了一种全新的方式去学习程序编程。尤其是对初学者而言,避免了对复杂的程序设计语言的编写。因为在Alice程序设计中,一些抽象概念可以形象地展现出来,所以初学者在学习Alice的过程中,就能更加直观地理解和学会类、对象、方法及事件驱动等概念,并为进一步学习C++和Java程序设计语言打下良好的基础。在美国,现今有300多所高等院校将Alice纳入了初学编程的课程中。有的小学把Alice编程课程放在小学高年级(5、6年级)的Science课中,从小培养孩子学习编程的兴趣与能力;不仅如此,在美国政府部门的大力支持下,很多中学和大学中,也将Alice编程课程作为选修课,面向对编程有兴趣的学生开设。像Intel、Oracle、Google等公司也设立了各种奖项,以此鼓励中、小学生开展具有创意的Alice编程。
4.2 Scratch
Scratch(http://scratch.mit.edu/)是由麻省理工大学(Massachusetts Institute of Technology, MIT)的媒体实验室终身幼儿园组(Media Lab Lifelong Kindergarten Group)开发的一套可视性程序语言的开发平台,旨在让程序设计语言初学者不需先学习语言语法便能设计创作产品。作为可视性程序语言,初学者不用担心语言文法,可以透过探索、实验去学习创造交互式故事、动画等技术。Scratch包含视觉化和叙事的两种特征,学习者可以用来创作互动式故事、动画、游戏、音乐和艺术,并在网络上分享自己设计的每个作品。
Scratch的界面主要分为四大板块(如图2所示):舞台、角色列表、程序指令区和程序编辑区。Scratch的主要特色在于它适用于初学者学习程序设计,学习者只需利用鼠标点击和拖拽的方式进行程序设计,完成可视化编程。不需要牢记任何指令码或编写复杂的程序码,解除了学习者在程序语言输入方面的困难,有助于提高学习者读对程序设计的认识,并培养学习者的逻辑思维。因为Scratch是一款面向少年儿童的程序设计软件,其创作的程序简单、易操作,而且界面的卡通形式也能够吸引儿童的兴趣,运用Scratch创作的作品进行教学活动,在儿童认知发展初期有着事半功倍的效果。
4.3 Lego Mindstorma
目前的研究表明,使用机器人可以帮助程序设计学习者更易理解计算机类课程中抽象的基本概念。1986年,丹麦的LEGO(乐高)公司和美国麻省理工学院的媒体实验室(Media Lab)进行的一项“可程式积木(Programmable Brick)”的合作案。1996年LEGO公司发布了Mindstorms机器人开发和编程工具包。而Lego Mindstorms(http://www.lego.com/zh-cn/Mindstorms/support)则是集合了电动马达、传感器、可编程主机、Lego Technic部分(轮轴、插销、横梁、齿轮)的统称。
Mindstorms是由益智玩具中可编程的传感器模具(programmable sensor blocks)的发展而来。乐高机器人套件(LEGO Mindstorma Robotics Invention System)是面向对机器人有兴趣的大人和12岁以上的小孩而设计的一个教育玩具。Lego Mindstorms的第一个零售版本Robotics Invention System(RIS)于1998年上市。目前的最新版本是2013年上市的Lego Mindstorms EV3。在免费的EV3编程软件中,拥有25个好玩的任务,EV3软件是给机器人编程,赋予机器人生命的关键,使用者只需编写一个程序,就可以让机器人按照指定的路径前进,让机器人服从使用者的命令。
Lego Mindstorma是一套可以对其进行编程的机器人拼装套装(如图3所示),它能赋予使用者创建和指挥专属于自己的乐高机器人的非凡能力。目前的最新版本Lego Mindstorms EV3套装中包含了使用者需要的一切,根据不同的编程设置,其控制的机器人可以移动、行走、说话。总而言之,使用者可以利用直观的编程软件(例如:智能 EV3第三代机器人程序块或智能设备)来自由地指挥机器人。
Mindstorms平台最初由于LEGO机器人缺乏与高等教育相符的程序设计环境,也缺乏对大学水平的程序设计语言(如:C++和Java)的支持,所以并不适用于高等教育。十几年以后,随着Mindstorms使用群体的日益扩大, Mindstorms平台为C++和Java开发了有效的程序设计环境,从而让更多的高校开始选用低价的LEGO机器人作为其教学的平台。
1)麻省理工学院(Massachusetts Institute of Technology)的电子技术和计算机科学系专门开设了自主机器人设计课程。学生可以在这门课程中,运用之前学到的编程知识,通过搭建物理模型,进行编程并自由地控制机器人的活动。最后再以比赛的形式完成实验,查看学习效果。
2)卡耐基·梅隆(Carnegie Mellon)大学作为第三方利用自身资源,开发了Robot C程序设计环境,如今Robot C已成为LEGO机器人最流行的程序设计语言之一。
3)加利福尼亚州立大学(California State University)在相应的课程中,使用物理模型来促进学生对程序设计结构的理解,使用LEGO机器人作为了他们的教学实验平台。
到2006年,在LEGO公司发布Mindstorms NXT机器人套装时,机器人在计算机教育中的作用已得到了普遍认同和欢迎。
4.4 RAPTOR
RAPTOR(http://raptor.martincarlisle.com/)是一种流程软件形态的程序设计软件(如图4所示)。RAPTOR是一种基于流程图的可视化程序设计软件,并提供发展算法的一种可视化环境,从而让学习者在可视化程序设计的环境中进行算法的撰写,并为程序和算法设计的基础课程的教学提供了一种实验环境。学习者通过鼠标拖拉左侧的流程图符号至右侧流程图编辑区,可以随时增减流程图符号或改变流程图符号的位置,使其在撰写的过程中不断地进行思考、安排和控制。
RAPTOR作为一种可视化程序设计的软件,已经为以卡内基·梅隆大学等为代表的世界上20个以上的国家的高等院校使用,在计算机基础课程教学中,也取得令人满意的效果。在RAPTOR的可视化操作环境中,使用者无须单独编译和执行,只需在其环境中执行相应的算法流程,所以使用RAPTOR来解决问题,就可以让原本抽象的概念变得越加清晰。这说明程序运作的逻辑顺序不必再利用传统程序设计的文字环境来进行设计和调试,可以直接在RAPTOR可视化的表达环境中进行,这也能够极大减轻使用多种软件时带来的学习负担。对初学者而言,RAPTOR并没有强制要求自上而下的分解程序设计目标,而是让学习者尝试着逐步去开发代码,利用交互的图形库,创造出更有趣的算法。
4.5 Game Maker
Game Maker(http://www.yoyogames.com/)是由Mark Overmars使用Delphi语言开发的视觉化程序设计软件(如图5所示)。Game Maker是一款可灵活编程、拥有图形界面、以2D游戏设计为主的游戏开发软件。Game Maker允许学习者使用图形、按钮和文本创作游戏,而无需学习复杂的诸如C++或Java编程语言,并可以在游戏设计过程中,附带上精美的背景、动画、音乐和声音效果。学习者只需要拖拽图形、输入文字、点击很少的几个按钮,选择一些控制选项,游戏很快就可以编写成功。凭借这些优点,Game Maker极大地促进了欧美乃至全世界独立游戏界的发展。
Game Maker是个专为设计游戏而制作的软件,不同于其他程序设计软件的是它将复杂的游戏功能融于简单的操作方式,适合提供给程序设计的初学者使用。因为Game Maker主要是为 2D 游戏而设计的程序软件,它提供贴图、移动、游戏规则以及其他多种功能,所以初学者只需通过拖拽Game Maker界面上的选项,就可以让初学者轻松设计和制作一个中型以下简单游戏。通过Game Maker提供的有趣环境和设计过程,让学习者从中学会游戏设计的概念、技巧和流程;学会物体、事件等程序设计概念。当学习者对程序设计的概念越来越熟悉之后,学习者就可以使用越来越多的程序设计语言,从而可以创作更高水平的游戏。
4.6 Baltie
Baltie4C# Pro(http://www.sgpsys.com/en/)是一款视觉化和分层语言式的程序设计软件(如图6所示)。学习者使用鼠标点选上方软件列表中的符号选项进行程序设计,适合程序设计的初学者使用。初学者可以使用Baltie的互动模式和图形区域进行程序设计;较高水平的程序设计学习者则还可以结合语法命令和图像区域的C#语言进行程序设计。学习者通过使用Baltie软件,可以学会逻辑、条件和事件等程序设计概念。
Baltie是面向图形的可视化编程软件。相比于Balties会帮助使用者很快意识到什么是计算机、如何掌握和计算机程序而言,使用Baltie可以更加锻炼使用者的逻辑思维,它并不要求使用者需要过多的程序设计技能和知识,只需要使用者的想象力。
4.7 Jeroo
Jeroo(http://www.jeroo.org/)也是一款具有叙事功能的程序设计软件。Jeroo适合初学者使用,学习者可以选择Java、C++和Python等任何一种程序设计语言应用于Jeroo中,让学习者根据自己的实际情况学习事物转向的程序设计概念。Jeroo的左侧提供编辑来源码的区域;它的右侧则呈现程序编辑的结果;它的下方则显示目前程序设计的状态信息(如图7所示)。根据信息科学领域中的研究者的研究结果显示,Jeroo能够显著提高学习者在学习程序设计的兴趣与自信心;使用过Jeroo的学习者几乎都指出:Jeroo是一套值得他们去推荐别人学习的程序设计软件,并且适合作为学习Java程序设计语言之前的学习软件。
5 结束语
程序设计软件越是简单易学、易操作、可视化和智能化,越是能获得初学者的喜爱。因为对于非计算机专业的使用者而言,他们只需要有一定的计算机操作认知基础,只需要花较少的时间和精力就可以掌握程序设计的基本知识,最好不需要用复杂的语言编程就可以实现大部分交互作用,减少他们学习程序设计软件的认知负荷。面向对象的可视化程序设计软件在现代程序设计思想中占有很重要的地位,未来程序设计软件将会以一种可视化,更易表达现实世界,更易为人编写的功能得到进一步发展,其使用将不再只是为专业的编程人员服务,人们完全可以用基础的程序设计知识来完成编程。
参考文献:
[1] 百度百科.程序设计[EB/OL].[2015-05-28].http://baike.baidu.com/link?url=y9EcZAkE9DfB7Ju7n5270UjsBNtREaxE5l6wt 9jvOSzac6q1znwEz_Vsx558dqW1WG0VGD1e-bq5T7Yu8JHkzK.
[2] 陈芸. 利用Alice三维虚拟世界进行程序设计入门教学[J].计算机教育,2007(9): 160.
[3] 陈勇,杨宛颖,张月. Scratch动画软件:功能、特点与应用[J].电脑知识与应用,2014(8):5519.
[4] 陈勇.信息技术基础[M].上海:上海交通大学出版社,2014.
[5] 百度百科.乐高机器人[EB/OL].[2015-06-02].http://baike.baidu.com/view/1590087.htm.