原型开发与公开发布是两个阶段

Scratch出自麻省理工学院媒体实验室终身幼儿园研究组与雅斯敏·卡法伊领导的加利福尼亚大学洛杉矶分校团队的合作。约翰·马洛尼、米切尔·雷斯尼克、娜塔莉·鲁斯克、布赖恩·西尔弗曼等共同参与早期设计。项目要让使用电脑制作图片、音乐的青少年,也能通过程序改变媒体的行为。

2004年的原始技术论文记载:团队在此前一年讨论设计后,于2003年1月开始实现首个原型;同年十月初,麻省理工学院和哈佛大学一门研讨课的学生试用了Scratch 0.1。这里的2003年指开发与测试,软件及配套网站直到2007年5月才面向公众推出,不能把两个阶段合为一次发布。

参考:[1] [2] [4]

使用者的困难推动原型重做

早期实现采用Squeak,即Smalltalk-80的一种开放实现。原型把静态图片、影片和声音分成不同对象类型,选中对象后可用的积木随之改变;测试者却希望让同一个对象兼具旋转、播放等功能。设计团队遂提出统一对象类型,以减少命令随选择变化带来的困惑。

另一问题是对象之间直接调用脚本:复制一个角色到别的作品后,它所依赖的另一角色可能不在,程序便难以独立使用。2004年论文把取消这种直接调用列为下一原型的修改方向。当时计算机俱乐部的正式试验还未开始,文中的推广设想应与已经完成的学生测试区别。

参考:[1]

积木让程序的结构显露出来

后来公开版本把舞台、角色、命令积木和脚本放在同一窗口。角色各自保存脚本及数据,使用者可以从命令栏拖出动作,接成顺序执行的程序。积木的凸凹和参数孔形状限制连接方式;循环积木把要重复的动作包在内部,使控制范围直接可见,而不必先记住文本语言的标点规则。

马洛尼等人在2010年解释,环境没有先编辑、再编译的分隔:点击单块或程序片段就能看结果,运行期间也能修改参数。变量可显示在舞台上,帮助观察数值怎样变化。这些设计减少了尝试的成本,但能拼接、能运行不等于逻辑正确,作者仍强调调试和思考的必要。

参考:[3]

一个接球游戏包含哪些计算

2008年的研究给出接球游戏:球从舞台顶部的随机位置落下,挡板跟随鼠标的横坐标移动,玩家设法接住球。球和挡板分别由自己的脚本控制,于是画面上的同时运动,对应程序中的并行活动;球的脚本还涉及循环、条件判断、变量和随机数。

角色之间可以通过广播协调。譬如一个角色发出胜利消息,另一个角色接收后出现并播放音乐。同一消息可触发多段脚本;需要等待回应完成时,另有带等待的广播形式。这样的联系不要求一个角色直接操纵另一个的内部动作,使角色较容易移到其他作品中复用。

参考:[2] [3]

课后中心的观察及其限度

2005年1月,研究者把Scratch带入洛杉矶南部一处设在街边店面的计算机俱乐部。成员自行选择作品,导师按需要提供帮助,活动还定期安排集中制作和展示。它不是把一门统一课程搬到课外,而是在游戏、绘画、录音等多种活动之间,为编程提供可以被主动选择的位置。

团队在十八个月内收集536个作品,约占该处同期作品的34%。其中425个含脚本的作品成为编程概念统计的基础。循环与交互较常见,变量等概念起初较少出现。研究说明社区中发生了持续探索,却不能把作品里出现某种积木直接等同于每位作者已经全面理解它,更不能据单一场所推断所有学习者的成效。

参考:[2]

发布把工具接入作品交流

2007年公开发布后,分享成为软件界面里的直接动作。雷斯尼克等人的2009年论文描述,作品上传后,别人可以运行、评论、下载和修改脚本。传播的不仅是动画结果,也包括制作方法,使用者因而能把别人的作品当作可以拆开观察的材料。

改编也引出署名争议:一些作者把别人复用自己的作品视作窃取。团队随后让改编项目自动链接回原作,并展示衍生关系,试图把技术上的复制变为能够承认来源的合作。Scratch早期形成的关键,在于把即时试验、媒体表达与作品交流放进同一环境;这些历史设计与后续版本的功能仍须分别说明。

参考:[4]