一、 BYOB与Scratch的姻缘
运行BYOB发现他与 Scratch并没有太大的区别,至少从外观上来看是这样的。但为什么两者名字差别如此之大呢?它们之间有着什么样的关系?带着这些疑问,我查阅了一些外文材料,希望能解开这个谜团。
原来BYOB的全称应该是Build Your Own Blocks,它是Scratch的一个改进版,由Jens Monig(Enterprise Applications Development, MioSoft Corporation)和Brian Harvey(University of California at Berkeley加州大学伯克利分校)基于Scratch原代码的基础上修改而成。
从Scratch的官方网站了解到,Scratch是一种开源的儿童编程软件,MIT所有的开发原代码都共享到了网络上,并支持和鼓励使用者对其进行修改和完善。不过为了保护其开发团队的权益和避免承担不必要的责任,MIT开发团队对Scratch的商标权做了规定:重新修改后的程序不得以Scratch的LOGO 名字、包括官方使用的默认角色等,一律不可以再重用,相关程序也不能挂放到Scratch的官方网站上,但必须注明是基于Scratch开发而成。至此我终于明白,纵然BYOB的界面和Scratch的界面奇似,但名字、默认角色都不一样的原因了。细心的朋友,也许还可以在BYOB的主界面的LOGO上看到相关的版权信息。准确来讲,它的全称应该是:BYOB based on Scratch by MIT.
深入了解之后,其实一点都不遇外,一直以来,Scratch开发团队都非常强调和鼓励使用者对程序进行修改和重组,只是想不到他们连原代码都开放,值得钦佩!不过也正因为有开发者的博大胸襟和开放意识,才有如今Scratch软件的不断完善和蓬勃发展吧。
二、BYOB3.1与Scratch1.4的差别
那么,到底BYOB对Scratch做了哪些改进呢?我想从界面开始了解是最直接和快速的方法。于是我以BYO3.1和Scratch1.4为例,对他们的界面进行了详细的对比与分析,试图找出它们的相同点与不同之处。
BYOB3.1主界面
从主窗口来看,他们没什么两样,但对比菜单栏和指令区,就能看到了一些改变。如BYOB3.1菜单栏中的“分享”与Scratch1.4菜单中的“分享”就有很大的不同,前者可以对程序进行编译和联机共享,而后者不能编译,但可以把作品分享到指定的Scratch指定的网络交流社区。以下是BYOB在Scratch的基础上增强的指令。
1、 控制模块:主要是针对调用和调试程序块而定制了一些指令;
2、 侦测模块:增加了对“对象”和“属性”的侦测;
3、 数字逻辑与运算模块:在原来的基础上增加了以下运算指令,特别值得一提的是把整个脚本用来做运算,为程序块的间的信息传递提供了便利。
4、变量模块:改动最大,追加了添加不同类型的程序块的功能,而且这个程序块可以是单纯的几个指令的集合,也可以是带参数的函数,能返回具体的值,支持递归调用。考虑到新建程序块的过程也可以定义变量,所以与变量相关的设置指令也在默认条件下出现。另外,这一模块还增加了“脚本变量”指令(用来快速定义临时变量)和“复制链表”指令,支持调用链表中的链表,实现链表数据的重复调用。
对比了两者程序指令区的异同,第一个感受就是:原封不动保留了Scratch1.4所有指令;第二个感受就是:追加,追加一些指令到其中。如此说来,BYOB的汉化版本也相对比较简单,只需参考Scratch安装文件locale文件夹中的汉化版本,在此基础上进行适当的追求和修改即可。
不过尽管是追加,但BYOB的这一改进却让Scratch编程有了质的变化,实现了真正意义上的面向对象的编程,这是它最大的贡献之一。 Scratch1.4版本,实现角色间或角色与背景间的通讯,通常只能用广播实现,而且这种实现方式只能播放信息,既不能传递变量,也不能返回具体的值,限制了程序的调用与代码的重用。而BYOB的这一改进,用户可以自由的增加不同类型的程序块,并对其进行参数的调用,实现真正意义上的信息传递,而这恰恰是OOP的核心思想之一。
……
三、 BYOB3.1 与Scratch2.0
近两年,Scratch也在试图对Scratch进行版本的升级,虽然还没有正式发布,但陆续也发布了不少升级进度报告,从中也能大致了解到升级版本的一些功能。
1、Scratch2.0在界面的设置与重组方面,有了很大的改动,如下图1所示。从视觉的角度来看,1.4的视觉中心在舞台,而2.0版本的视角中心转到了脚本区,作为一种编程语言,我觉得2.0的视觉中心更合理。
图1(图片引自 Scratch官网)
2、背景更名了场景;
3、能使用相机运动传感;
4、Scratch在原来1.4的基础上,还增加了“云数据”;
5、增加了角色的克隆,既可以继承原来角色的属性,又可以进行修改;
6、添加了“My Blocks”指令集,允许用户添加带新的程序组块,可供重复调用(如图2、图3所示)
图2
图3
7、主界面中增设了“Backpack”栏,用户可以把程序组块、角色、声音等信息保存下来,应用到其它程序中,很好的实现代码和对象特性的继承与再利用;
8、分享与交流功能得到很大的提升。新版本主要基于Web平台来操作,这让作品的分享和重组变得更容易,用户还可以建立自己的工作室(如图4),对自己的作品进行分类管理,相关页面还提供好友管理和浏览跟随功能,用户可以轻松回访和交流。
当然,发开团队也说明,同时会有一个脱机版,供非网络环境使用。
图4
与BYOB3.1相比, Scratch2.0有相同之处,也有其独特的之处。
不同点:Scratch2.0 是基于flash环境下运行,而BYOB3.1仍然是java环境;
相同点:两者都增加了“Make a Block”的功能,不过从版本预告信息来看,Scratch2.0的添加新的程序组块功能在自我定制方面似乎并不如BYOB强,至少在类别上就没有BYOB多,这个还得等Scratch2.0正式发布之后去尝试才能确认。
顺便提提,听说BYOB3.1也要升级了,而且不仅升级,连名字都会改,改为snap4.0,据说改名是因为BYOB的缩写有歧义,但不管怎么样,升级也算是程序发展进步的表现,值得肯定,不过目前还不看到相关的功能简介,只知道整个界面的色调变了,如图5所示。
图5(图片引自于BYOB website)
四、 如何看待这些不断更新的儿童编程语言
看到这么多个版本的不断更新,是不是有点眼花缭乱了呢?其实软件版本的更替也是非常正常的事情,至少说明了这个软件是受关注和不断发展的。不过也许会有老师说:这么快就出现这么多版本,我们到底该用哪个版本好呀,眼看Scratch1.4还没用熟,就又出来了BYOB,甚至是Scratch2.0,真让人应接不暇……其实,这只能说是我们的脚步慢了,在国外,早在前年前,这个软件就很火爆了。那么怎么选择首先应该明确两件事:
1、 明确学生的认知水平,内容适用为宜——解决学什么的问题
有时候我们总是希望用大人的思维是判定孩子学习语言的能力,认为我们大人给编出来的东西孩子也一定可以,我觉得这是不遵循孩子学习规律和对孩子不负责的表现。对于选择什么样的语言来教学,既要看其本身的特点,更要看儿童的接收能力。
据悉,MIT的Scratch研究团队开始的初衷就不希望把Scratch语言复杂化,以免引起儿童的恐惧心理,我想就是这个道理。伯克利的课程团队最初开设BYOB试点课程时,主要针对的学习群体是非计算机科学专业的18岁和19岁的青年。Brian Harvey也曾在他的文章中提到不建议儿童时期就开始写递归程序、高阶函数或对象类等。如此说来,那些新添的程序组块未必用得很自如,至少在小学阶段是这样的。毕竟面对“简洁的语句和复杂的调用”小学生理解起来还有一定的难度的。不过学有余力的学生,多接触一些面向对象的编程思想也是件非常有意义的事情,这也是程序设计的发展趋势。
所以,面对版本的更替,我们并非一定要随波逐流,一切应以学生的实际情况出发,充分考虑学生当下的认知水平,适用就好。
2、明确程序教学的核心,避免为教软件而教——解决怎么学和学得怎么样的问题
在教学上,无论我们选择哪个版本的程序语言,软件本身也仅仅是一个载体,而利用这个载体,学生能学到什么,也才是我们思考的关键。我想大家都会认同:我们并非想教给学生某个指令有哪些功能,我们的眼光会更多地投放到学生能用这些指令做出些什么东西来,而在这个做的过程中他们的哪些能力能得到提升。
所以,在选择哪一个版本这个问题上,我觉得在适用的基础上进一步明确程序设计教学的核心目标。依托图形化的儿童编程软件,引导学生在学编程的过程中,锻炼思维,提升能力。否则会沦落为为教软件而教的被动局面,以前的LOGO语言是这样,现在的Scratch语言 也应该是这样。
本站内容未经许可,禁止任何网站及个人进行转载。