在众多的图形化编程语言或儿童编程学习工具中,由MIT媒体实验室和其终身幼儿园团队支持研发的Scratch (scratch.mit.edu) 算得上是中国地区最广为人知的。Scratch的突出影响力不仅体现在注册用户超过680万以及发布共享项目超过970万这些数据上,更体现在大量出版的Scratch教程书籍、网友自建的Scratch论坛活跃度上,这在众多的儿童编程教学工具当中无出其右。
Scratch针对的目标群体是8~16岁的儿童。而Scratch最突出的特点,便是提供用户一套由积木系统组成的编程指令,积木类型包括以下10种:
类型 注释 动作 移动角色、变换角度
外观 改变角色外形,添加说话/思考框,改变背景,放大或缩小角色
声音 播放音频文件
画笔 通过控制画笔的粗细颜色和形状来画画
数据 新建变量和链表
事件 设定运行代码块的驱动事件
控制 条件指令“如果……那么……否则”、“重复”、“停止”等等
侦测 角色可与用户创建或从PicoBoard、Lego WeDo导入的环境互动
数字和逻辑运算 数字运算,随机数字生成,且或非逻辑运算
更多模块 自定义指令积木或外部链接设备控制模块
来看一看Scratch的界面和操作
用户在中间区域选择不同的编程指令“积木”后,在右边的代码界面自行组合,随后在左侧可视化窗口看到代码的运行结果。Scratch中指令积木的外形和颜色都根据编程上的语法意义区分了开来。比如“控制”类的积木(如repeat重复)是C字型的,意味着这类积木内部应该放置其他积木(块);输出数字类型量的积木用椭圆形表示;输出布尔量的积木则用六角形来表示等等。
Scratch开创了积木式编程学习模式的先河
Scratch在2003年首次推出了桌面版,2005年首次推出了网页版,2007年向公众开放并加入了社区分享功能,2013年推出了沿用至今的最稳定版本Scratch 2.0,该版本同时支持网页版和离线版。
Scratch开创了模式化、积木式编程学习模式的先河,并激励了许多相似或衍生产品的出现,如Blockly(Google于2012年公测发布)、SNAP!、Hopscotch、Tynker等等。而这种积木式的学习模式的原型,则是来自于Lego。
然而,在图形化编程语言中,Scratch并非是真正的“老大哥”。事实上,Scratch受到了专业编程语言Action Script、Java Script以及针对儿童的初阶编程语言Alice、Squeak、Edtoys等前辈的启发,并融合了各方的优点。Scratch 1.1~1.4 是基于Squeak(Smalltalk-80的一个实现)开发的,而Scratch 2.0则是基于ActionScript开发的,同时使用JavaScript引擎,并用Flash完全重写。
从Scratch看什么是好的学习产品设计
Scratch开发团队在项目创建之初,总结出一门好的编程语言应该满足三个条件:低门槛(low floor),即容易上手操作;高上限(high ceiling),即允许使用者建立高度复杂的项目;宽壁垒(wide walls),即支持各类项目的创建,能满足用户的不同需求。为了达到这三点要求,Scratch在不断更迭的过程中,在保证用户终身免费使用的前提下,始终坚定了三条核心设计原则:程序更易修改(More tinkerable)、项目更有意义(More meaningful)、社交氛围更浓厚(More social)。
程序更易修改
MIT媒体实验室下的终身幼儿园团队与Lego有多年的合作经验,参与过Lego Mindstorms和其他机器人产品的研发。开发团队发现,在孩子们搭建积木的过程中,他们会积极地动手尝试,并在搭建过程中自发地改进和创造。
Scratch的代码窗口界面刻意被设计成类似实物桌子的样子,便是在模仿孩子们玩Lego时的场景,方便孩子们随意拖拽编程积木在这个“桌面”上。配合Scratch交互性极强的编程环境,用户只要一触发代码块的运行,可即刻在左边的可视化窗口观察到运行结果,并可在运行过程中修改代码,观察修改后代码对应的触发结果。
这种学习模式与一般编程学习工具倡导的“自上而下的规划(top-down planning)”相反,被称为“自下而上的修补(bottom-up tinkering)”,这样的模式可能会让学习过程有些杂乱无章,但用户根据动画运行结果来不断修改代码,这种探索实验式的学习途径其实是更让学习者感到舒适的。Scratch多次更新的过程中,也强调了通过这种模式培养孩子们“直觉思维(intuitive learning)”的能力。
项目更有意义
我们都知道,我们在做一件自己认为有意义的事情时,我们是最享受的,这时候学习也是最高效的。Scratch的开发团队也深知这一点。因此,Scratch在开发之初非常关注两点:多样性和个性化。
多样性是指Scratch支持用户创建各类项目,不管是故事、游戏、动画,用户都可以根据自己的需求和兴趣在Scratch上完成相应类型的项目。
个性化是指支持用户在Scratch中导入图片或音乐、录音、画图等功能。这也是Scratch至今仍坚持采用有些过时的二维位图技术的原因。因为只有在这样简洁单一的环境下,用户的各式各样的素材才能被充分地得到支持,项目才会充满创造的无限可能性。
社交氛围更浓厚
Scratch这个名字,灵感来源于DJ打碟时“scratching”的技巧,即“混合不同的声音”。因此,Scratch一个相当重要的概念便是“remix”,即“重新混合”。这不仅指Scratch希望用户通过组合代码积木、图片、音乐、照片等元素做出有创意的项目,更是指Scratch鼓励大家在社区中互相学习,并通过互相修改、优化对方的代码来改进项目。
自Scratch推出2.0版本后,Scratch从一门编程语言转变成了一个语言与社区并重的产品。Scratch社区已是Scratch不可分割的一部分,其活跃的社区氛围也是Scratch达到如此大影响力的主要原因。
“人工智能之父”Marvin Minsky曾说过:LEGO has a great grammar but not much literature。意思是,尽管Lego有一套非常适合孩子们学习的模式方法,却没有提供太多让孩子们可以借鉴的优秀作品范例。Scratch 2.0新增的“一键分享”功能,便体现出Scratch对“再创造”理念的重视,这种“分享”、“再创造”的概念极大推进了学习者之间的合作以及对开源的理解。不少Scratch经典项目便是由来自多个不同国家的孩子跨国合作完成的。当然,拥有超过40种语言的翻译版本是这一切跨国合作的基石。
在自身影响力越来越大的阶段,Scratch在2009年7月推出了针对编程教育者的论坛ScratchED,除此之外,无论是在三条核心设计原则还是目标群体定位策略上,Scratch都没有改变,始终如一地坚持了它的产品初衷,把使命定位在培养孩子们的“Digital fluency”(指使用计算机语言流畅表达的能力)上。Scratch认为,编程只是帮助我们表达的一种媒介,而非谋生的一种手段。编程能力就和读写能力一样,即便我们不会成为专业的程序员或作家,这些能力都是我们需要掌握的基本能力。
在这些核心理念的牵引下,Scratch在版本更新过程中,明显多媒体功能和多线程编程越来越突出,而Scratch编程语言的限制却相对越来越明显。比如,Scratch 2.0版本加强了与外部链接设备的互动,包括基本的摄像头、录音设备以及LEGO WeDo、LEGO Mindsotrms、Arduino和Scratch板等等,增强了多媒体功能;然而Scratch 2.0版本只支持一维数组(即数列lists),尽管2.0版本和1.4版本一样支持浮点标量和字符串,但字符串的可操作范围会相对更少。
不过,Scratch毕竟只是孩子学习编程的工具,并非Smalltalk和Squeak那样的全功能应用程序开发语言。而Scratch早期所受到的批评,例如“孩子们难以在没有大人指导的情况下学会Scratch”,早已通过降低语言门槛和丰富Scratch的教程资源等途径弥补了。也许Scratch还会受到更多的质疑和批评,但它始终如一的使命感、极大的包容性以及博取众长的更新能力,终究会成就它无限的成长空间,成为更有效、更具影响力的儿童编程学习工具。
推荐阅读:
2、芥末堆不接受通过公关费、车马费等任何形式发布失实文章,只呈现有价值的内容给读者;
3、如果你也从事教育,并希望被芥末堆报道,请您 填写信息告诉我们。