类Scratch软件群介绍
2012-04-29邓江华
邓江华
编者按:在科技发展日新月异的今天,信息技术教学已经远离了开、关机还需要反复讲解的时代,三岁孩童熟练地摆弄着iPad已非奇事。自策划了“Scratch来了”这一专题之后,编辑深刻感受到研究程序语言的老师的可爱,他们的执著、他们的探索,使得程序教学不再那么枯燥,焕发出勃勃生机。因此,杂志特别策划了这一专栏,将陆续刊发一些程序教学领域有代表性的教学实践。也期待更多老师投身到程序教学中去,通过自身的践行,推动程序教学的复兴。
本期,邓老师将就“类Scratch软件群”这一概念进行详细阐述,如需更进一步交流,请@邓老师的邮箱:123412387@qq.com。在此,特别感谢吴俊杰老师的热情支持。
Scratch 2.0测试版就要来临,我们怀着激动的心情在等待。一方面Scratch 2.0使用Flash技术重写代码,图形也矢量化了,让作品更加流畅和便于网络分享。在功能方面更是有了很大提升,如视频互动、在线数据库、在线编辑存储,自定义函数功能、支持更多的硬件等。而另一方面,工作组更注重知识产权,加强社区经营,与LEGO商业合作,不再支持开源硬件等。让很多想参与Scratch教学的老师左右为难,举棋不定。担心如果我们积极推广教学后,2.0商业化了怎么办?
其实Scratch从诞生开始就不孤独,它是由开源软件Squeak 2.8开发而来,而这一项目已经有35年的历史了。它的界面是卡通的,使用图形化编程,适合儿童和初学者学习电脑编程。“OLPC(One Laptop per Child,每个孩子都有一台电脑)”项目,在向全世界贫困儿童捐赠的100美元笔记本电脑中就安装了这个软件的一个集成版本EToys。开发它们的主要程序语言Smalltalk更是来自上世纪70年代的古董级的编程语言,至今都还有着顽强的生命力。在2012年11月,Scratch在编程语言排行榜上名列37位。而它们的编写灵感都来自麻省理工学院人工智能研究部的海龟编程——LOGO。
基于开源软件编写的Scratch,遵循开源软件的协议,采用了最为宽松的MIT协议(麻省理工学院开源协议)——开发组织除了保留对“Scratch”名称和“小猫”LOGO的权利外,公布源码,允许任意修改、发布、传播。最新的官方版本是1.4版。而根据开源项目的开发模式和软件发布过程,一般来说,开发的进程不会很快,从α版到β版再到正式版,所以我们的等待可能会很久。但是,好在目前已经有不同的改进扩展版本在网上流通供我们选择。下面我们来一一认识它们吧!
● 加州大学伯克利分校的版本:BYOB
软件群中的典型软件是采用Scratch源码修改而来的,最典型的是BYOB。BYOB的原意是:建立自己的程序块(Build Your Own Blocks),是由德国律师Jens M nig和加州大学伯克利分校讲师Brian Harvey这样两位Smalltlak编程高手为Scratch编写的扩展版,增加了高级函数和自定义函数功能,让Scratch成为真正的面向对象编程工具。其中,Jens还设计了Scratch的封装程序ChirpCompiler (Scratch2Exe),能将作品封装为可执行文件。这一功能使得Scratch可以编写独立运行的程序项目,也为一门编程语言的完整性做出了贡献。BYOB扩展的内容主要有三个。
1.分享菜单改为编译项目和局域网共享功能
在编译项目时,文件名一定不要使用中文,不然容易出错。编译好的文件在我的文档中,图标如下,如果想使用自己的图标,请去下载单独的封装程序ChirpCompiler。
BYOB的联网功能相当强大,首先在一台电脑上运行BYOB,编写好代码,选择设置为主机,如果弹出本机的IP地址窗口,表示设置成功。然后,从另一台电脑上也启动BYOB,选择联接到主机,会弹出IP地址的输入框,输入主机的IP即可,这时选择主机菜单上的“分享这个角色”,联接到主机上的BYOB程序里,将会增加这个角色及脚本,包括变量和链表。这一功能有助于教师讲解多角色多任务的复杂程序,教师可以分时间分步骤地边讲解,边发送原程序给学生,易于学生阅读与理解。同时也为多人共同编写程序提供了重要的技术保障(如图1)。
2.控制块的变化
BYOB在控制块中增加了调用块和调试块,侦测块中增加了事物块和属性块,数字和逻辑运算块中增加了字符转换及克隆程序块,有些功能尚在测试阶段,老师们可以自己实践。如果想体验BYOB更丰富的程序块,请打开BYOB例子下的TOOLS文件夹下的tools文件,在各程序块下都会出现隐藏的扩展块(如图2)。
3.变量块中增加新建程序块
自定义函数这一功能的实现让BYOB成为一个真正的面向对象的编程语言,不仅是小学生和初学者的工具,更可成为中学及大学教学程序的重要入门工具。目前美国多所高校与高中正在进行教学尝试。新建程序块的方法很简单:笔者将以自定义多边形DBX绘图工具块为例进行讲解(经测试定义带参数的函数不能使用汉字)。
(1)选择一个分类对应的分类块,新建好的程序就放在对应分类里,如选择画笔,新建的块就存放在画笔块的最下方。选择新建程序块的三种属性,输入块的名称以及适合范围,然后确定(如下页图3)。
(2)创建程序参数:①在程序块编辑器中,选择DBX后面的“+”添加参数。②在弹出的创建输入名中输入多边形边数(bianshu),再选择输入名后方的箭头,选择输入名的类型为数字,输入框为单个数值输入,因为边数最少的多边形是三角形,所以设置默认值为3。③用同样的方法添加多边形的边长(bianchang),设置为数字型,默认值设置为100。而多边形的角度值,利用多边形外角和为360度的公式进行计算(如图4)。
(3)创建程序块。先从画笔块中拖入“落笔”,再从控制块中拖入“重复执行10次”,从动作块中拖入“移动10步”、“旋转15度”。再将bianshu拖到重复执行次数中,bianchang拖到移动步数中,在旋转度数中拖入数字和逻辑运算中的除法块,输入360/bianshu(如图5)。至此,整合多边形画图程序块编写完成。
到画笔程序块的下方,将出现DBX程序块,拖到脚本测试一下吧!修改多边形的边数从3~8,画出了不同的图形喔。当然,还可在程序脚本之中直接再使用这个块,同时也可以在参数中放置变量,通过变量的调节,绘出各具特点的图形来(如图6)。
与BYOB类似,从动作、控制、外观、侦测、声音、数字与逻辑运算、画笔、变量、文件、颜色、系统、文字、网络、报告等15类,增加扩展程序块的项目,让使用者更方便地实现自己的想法,同时也体现了Scratch的核心思想──想法、程序、分享。其中与开源硬件相结合的有Scratch for Arduino(S4A);程序模块种类丰富的要数Bingo,还有Panther、Insanity、Gopher等。它们与Scratch相比,增加的功能均列在了下页表中。使用者可以根据自己的需要,选择对应功能的版本,甚至还可以学习Smalltalk语言,编写属于自己的版本。
笔者通过比较开源软件项目Scratch的各个改进版本,希望大家能够看到开源项目的旺盛生命力。众人拾柴火焰高,只有大家共同努力才能把项目做好。事实上,上面的这种比较的过程,也是我们从事程序教学的重要教学内容,程序设计软件的不同版本的选择,是一个重要的能力,平台的选择往往决定着一个软件项目的成败,因此期待着更多的老师从平台选用的角度设计信息技术的教学内容。
● 基于网页版的类Scratch软件群
使编程更方便、分享更及时,是所有项目最终的目标,类Scratch软件群有网络化的趋势。Scratch2.0在线版用Flash重新编写了所有代码,成为这一软件群的新领袖,令人期待。BYOB项目组也开始了SNAP! 4.0项目,通过网页能实现BYOB的大部分功能。水熊虫(Waterbear)项目组也开发了支持所有浏览器的编程语言。这三个项目,日前都处在测试阶段阶段,有兴趣的读者可以时常关注项目的发展。
1.Scratch2.0
在大家焦急等待之时,笔者通过强大的谷歌搜索找到了“三无尝鲜版”(无数据库、无云存储、无社区)Scratch 2.0,10月31日非正式地通过论坛www.iscratch.org推广发布,同时也得到网友“扬州冷火”的支持,为此编写了离线体验版。让很多的爱好者获得了最新版的体验。
2.SNAP! 4.0
BYOB项目组开发了在线版SNAP! 4.0,它生成的工程文件为XML格式。SNAP提供全部网页源码,用户可以自行解压到自己的网站上运行。并通过修改JS语言文件,将程序本地化。由于是网页版,所以删除了原BYOB程序中所有硬件部分的程序块,以及声音块中的MIDI发声模块。另外,在自定义程序块方面,SNAP也是相当出色。而且它支持各类浏览器,并且在手机及平板电脑上运行得也相当流畅,可以说是Scratch2.0有力的竞争对手(如图7)。
3.水熊虫(Waterbear)项目
该项目在Scratch程序块的影响下,创建了在网页拖动编程并运行的编程语言,让编程更加方便、有趣,也是儿童、艺术家和任何想体验编程的人的学习工具。水熊虫的目标是超越Scratch,创建一种新的编程语言,创建一个可视的互动程序工具。它能在各种浏览器上运行,包括iPad上的Safari浏览器。项目组人员希望能够创建出如水熊虫一样健壮的代码,水熊虫项目最大的特点是可以拖动程序块来编写程序,同时可以查看程序块生成的原始代码,让使用者在使用程序块编程时知其然,更要知其所以然。
综上所述,类Scratch软件群给予我们的选择空间还是很大的,只要我们理解其核心理念。不论采用哪种软件,最终的目的都是一致的。而根据国外非程序员体验编程艺术的有一个参考的学习过程为:Scrath→Etoys→Squeak→任意Smalltalk语言,由此来说,Scratch只是一个开始。所以,即使是使用现在稳定的1.4版,只要能让学生和非程序员体验到编程的乐趣,就已经实现了信息技术的课堂之美了。通过两年多的教学尝试,笔者发现教会学生使用软件是一件很简单的事,而想法及解决想法的程序,才是接下来需要研究的方向,这个问题的解决将极大地影响信息技术学科的发展。
最后,希望在大家等待最新版时,能关注专为Scratch学习讨论建立的网站www.iscratch.org。让我们通过这一平台,一起学习,共同进步。目前在图形化编程这个领域,中国的力量还很弱,我们的需求还不能够影响各个原始团队的开发走向,不过我们有很大的用户潜力,只要我们团结起来,深入地进行研究,相信会有更多地来自国内外的开发者向一线老师取经,让我们共同努力把“类Scratch软件群”研究好、选用好。