Silvia俞 scratch编程各部分名称(积木式编程学习模式的先祖)(1)

用户在中间区域选择不同的编程指令“积木”后,在右边的代码界面自行组合,随后在左侧可视化窗口看到代码的运行结果。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还会受到更多的质疑和批评,但它始终如一的使命感、极大的包容性以及博取众长的更新能力,终究会成就它无限的成长空间,成为更有效、更具影响力的儿童编程学习工具。

,