最早看到Scratch的人,大多先被它那张五颜六色的积木界面吸引,然后把它归类为“小孩子学编程的玩具”。再往下了解一圈,又会听到“麻省理工媒体实验室”这样的名头,但很少有人能说清楚:到底是谁、在什么时间、因为什么原因,做出了这款在少儿编程教育领域几乎成为代名词的工具。
Scratch的发明者是Mitch Resnick(米切尔·雷斯尼克),他是麻省理工学院媒体实验室“终身幼儿园”研究小组的创始人和负责人,2007年带着团队正式发布Scratch 1.0。这个信息并不冷门,可大家真正想弄明白的通常是另外三件事:为什么是他,他当初想做的是什么事,以及搞清楚这些之后,对我们现在给孩子选编程工具、安排学习路线有什么实际帮助。这篇文章就围绕这三件事展开,不写什么宏大叙事,只讲清楚来龙去脉,再把我这些年接触Scratch项目、给老师做培训时积累的经验揉进去。
1. 发明者的身份与背景
1.1 别被“MIT团队”这几个字带偏
网上很多资料会把Scratch的发明者写成“MIT团队”,听起来像是一群研究人员在实验室里碰撞出来的产品。这个说法不能算错,但会让人忽略一个关键事实:Scratch从理念到架构,有一位非常明确的核心灵魂人物,就是Mitch Resnick。
他本科在布朗大学读物理,后来跑到麻省理工拿到计算机科学硕士和博士学位。早年还做过一段时间记者,给《商业周刊》写科技类报道。这段职业经历让他比很多纯技术出身的人更在意一件事:用户能不能听懂、能不能用起来。后来他进入媒体实验室,师从Seymour Papert,也就是Logo语言的发明者。Papert的教育理念对Resnick影响极深,Shirley是我坚持我在做事的地图。可以说,如果没有Papert当初提出的“让儿童通过编程来思考”这个思路,Scratch今天大概率不是我们现在看到的样子。
Resnick自己的研究方向一直围绕“如何用新技术支持创造性学习”。这句话听起来很宏大,落到实际就是两个问题:孩子怎样能像在幼儿园里搭积木、画画、过家家那样学习?计算机能不能成为幼儿园那类材料的延伸?这两个问题最终变成了Scratch的设计起点。
1.2 一个博士为什么整天琢磨“幼儿园”
“终身幼儿园”这个名字不是随便起的。Resnick认为,幼儿园里那套“想象、创造、玩耍、分享、反思”的循环,其实是最理想的学习方式,不只适用于儿童,适用于所有年龄段。问题是,大多数人一进入正式教育阶段,就被迫切换到“听课、记笔记、考试”模式,创造和玩耍被切割掉了。
Scratch的核心设计意图,就是把人重新放回幼儿园式的学习循环里。孩子写一个Scratch项目,先要想象一个效果,然后尝试用积木拼出来,过程中会反复调试,做完了发给同学、发到社区,收到反馈后再改。这个流程跟搭积木、过家家的内在规律完全一致。所以Scratch一直强调自己是“low floor, high ceiling, wide walls”——门槛很低,上限很高,墙壁很宽。低门槛是指不认识英文、没学过语法也能上手;高上限是指它能做出各种小游戏、动画、物理模拟甚至复杂的交互装置;宽墙壁则是指它允许孩子用完全不同的路径去表达,不限定你必须按某一种编程范式走。
理解了这一层,再看Scratch里那些看似简单的设定,就明白每一项都是在执行“幼儿园式学习”的理念。
1.3 从Logo到Scratch:跨越三十年的思想接力
Seymour Papert在1960年代开发Logo语言时,已经提出“孩子不应该被编程,而应该编程计算机”的观点。Logo用“海龟绘图”的方式让孩子们通过移动屏幕上的小海龟来学习几何和逻辑。这在当时非常超前,但Logo的上手难度依然不低,因为它本质还是命令式文本语言。
在很长一段时间里,Papert自己都困惑于一个问题:为什么Logo没有改变全世界的教育?Resnick后来给出的判断是,技术工具和时代土壤还不匹配。图形界面、鼠标操作、多媒体表现这些东西成熟之后,才有机会把Logo的理念重新包装成普通人能直接拿起来用的工具。
Resnick2003年前后在媒体实验室组建团队,开始认真做Scratch,核心成员包括Katie Salen、John Maloney、Natalie Rusk、Brian Silverman等人。他们吸收了Logo对“孩子主导学习”的坚持,但换了一套全新的交互表达。所以回到“谁是发明者”这个问题上,单纯报一个名字是不够的,准确说法是:Mitch Resnick与他在麻省理工媒体实验室的团队共同发明了Scratch。他是那个把理念、资源和团队拧到一起的人。
2. 发明过程中的几个关键设计决策
2.1 为什么非要用积木式拼接,而不是直接写代码
Resnick团队在做原型阶段试过好几种方案,最终选了“积木拼接”这个形态,不是拍脑袋,而是基于多年观察。小朋友很喜欢用鼠标拖东西,但要求他们记住语法、括号、缩进,注意力马上就会从“我要做的事”转移到“我怎么让程序听我的话”。Scratch的积木被设计成只能按正确形式咬合:条件判断是六边形,参数是椭圆形,事件积木是帽形,命令积木是块状。
这个设计的精妙之处在于,它把语法检查前置了。孩子在拖动积木的那一刻,很多错误就已经被物理上杜绝了。比如事件积木只能放在最上面,条件块只能包住特定指令块,不匹配的形状根本搭不到一起。对成人来说可能觉得无所谓,对一个刚刚接触编程、对报错信息毫无概念的小学生来说,这个设计直接消除了大半挫败感。
我在实际使用中体会很深的一点是:Scratch的积木分类方式也是精心设计过的。“运动”“外观”“声音”“控制”“侦测”“变量”这些分类,几乎对应了孩子做动画、做小游戏时最自然的几个思考维度。想让人物动起来,找“运动”;想让人物说话,找“外观”。这种分类方式比“输入输出”“流程控制”这种计算机科班术语友好得多。
2.2 Scratch 在线社区:发明出来之前先减半
Scratch另一个独特设计是自带在线社区,这在同类教育工具里很少见。Resnick在早期设计阶段反复强调,学习需要在分享中发生,所以Scratch官网从一开始就把“查看别人的项目”“改编别人的项目”做成核心功能,而不是顺便加个作品展示区。这也是Scratch社区里“Remix”文化特别强的原因——一个作品可以被无数人改来改去,每次改动都记录来源。
这个设计对我这种做教学的人影响很大。以前我带学生上编程课,孩子们做完一个项目交差就结束了,没有互相看的习惯。后来把Scratch社区的分享机制搬进课堂,让孩子两两结对、互相改对方的作品,课堂交流明显活了起来。其实编程教育最难的部分不是孩子学不会语法,而是他们缺少“做出东西给人看”的动力,Scratch社区正是给这个动力提供了阵地。
2.3 Scratch 桌面版和其他平台的取舍
很多人会问:Scratch不是网页版就能跑吗,为什么还要单独出一个桌面版?这里有一套逻辑。网页版优势是打开就能用、容易分享,但对网络环境有要求,而且浏览器的某些功能限制会拦住高级玩法。自从Scratch3.0转向HTML5技术之后,它对WebGL和一些浏览器特性依赖加深,老旧设备经常出现卡顿。
Scratch Desktop for Windows的意义在于,把完整的Scratch环境打包成桌面应用,不受网络波动影响,也能实现更高的性能和更稳定的体验。尤其是学校机房那种可能不允许装太多网络插件的环境,桌面版要省心得多。我自己就遇到过,网页版在教室的公共电脑上经常加载不出来,换成桌面版之后,一堂课顺顺畅畅地上完。
还有一个容易忽视的原因:Scratch桌面版用的是Electron外壳,这意味着它在Windows、macOS上体验一致。无论哪个平台,孩子回家之后装个桌面版,操作流程和学校完全一样,不需要重新学一遍界面。
3. 理解Scratch的能力边界与真实价值
3.1 Scratch 亮度、变量与条件判断:三个常见热搜背后的教学逻辑
Scratch相关的热搜词里,“变量”“条件判断”常年出现,这其实反映出学习者在思考编程核心概念时的真实困惑。很多老师教这两个知识点时,会直接把计算机课本里的定义搬过来讲:“变量是存储数据的容器,条件判断是根据表达式的真假决定执行路径。”听起来严谨,但对一个十一二岁的孩子来说,完全无法转化成操作动机。
Scratch的优势在于把这两个抽象概念具象化。变量积木可以直接显示在舞台上,孩子们能看到数字在变化,可以从“测分数”“计步数”这种场景中去理解它。条件判断积木则是彩色六边形搭配“如果...那么...”的自然表达方式,孩子不用去背布尔表达式的概念,直接就能搭出一个“碰到边缘就反弹”的规则。这种从具体操作中习得逻辑思维的方式,才是Scratch真正的教育价值所在。
再比如“亮度”这个热搜词。很多孩子做舞台光影效果时会用到“亮度”积木,这段操作看似只是改一个视觉参数,其实已经在接触“对象属性可调”“变量影响外观”两个编程概念。一个孩子如果想做月圆月缺的动画,就会自然搞明白如何用变量去控制亮度变化。这就是Scratch的宽墙壁——同样一个概念,它可以从美术、游戏、动画等多个入口进入。
3.2 Scratch 能做出的经典项目:植物大战僵尸、中秋节主题为什么到处流传
Scratch社区里流传最广的教程项目,植物大战僵尸绝对排得上号。从热搜词就能看出来,大量用户在寻找“Scratch植物大战僵尸代码”和源码。这个现象背后有一个很实际的逻辑:孩子天然喜欢模仿熟悉的游戏,而植物大战僵尸这种“放置、发射、敌方推进”的游戏逻辑,恰好能把克隆、广播、随机数、变量判断这些核心编程知识串起来。做一个简化版,需要分三步走:先控制植物选择,再用克隆克隆僵尸,最后做碰撞判定和胜负条件。每一个环节都涉及具体编程概念,但因为目标好玩,孩子在实际项目中就把知识点吸收了。
中秋节主题的Scratch源码在每年九十月也会迎来一波搜索高峰。这个现象在学校里特别明显——很多老师会布置“中秋节主题Scratch作品”任务。我见过不少孩子把这当成负担,但如果引导得当,他们反而会主动想做。比如月亮从圆变缺的动画,涉及亮度、造型切换和时间变量设计;做月饼小游戏,涉及鼠标跟随、落点判定;结合“嫦娥”“玉兔”这些角色,把叙事和交互结合在一起。这种传统节日主题其实是Scratch教育里的黄金场景,因为它天然给了孩子一个“内容驱动编程”的起点。
3.3 Scratch 考纲和等级考试:商业化之后的冷思考
另一个热搜词“Scratch考纲”背后,是国内这几年兴起的青少年编程等级考试和竞赛体系。Scratch从兴趣玩具延伸到考核工具,本身是生态壮大后的必然结果,但这里我想泼点冷水。等级考试的确能给孩子一个阶段性的正反馈,也方便家长直观看到学习效果,但很多机构的教学会特意针对考试去做,结果孩子能够熟练做出一堆静态作品,一遇到开放性问题就懵了。
给孩子做Scratch考纲内容时,我建议把它当作“检验知识点的镜子”,而不是“学习编程的唯一目标”。考前突击题型没问题,但刷完题之后,一定要让孩子再回到自由创作状态,做自己想做的项目。考试检验的是知识点是否记住,而编程的核心能力是迁移和创造,后者只有通过自主项目才能锻炼出来。考级可以成为一个节点,但不能成为终点。
4. 常见问题与排错经验
4.1 打不开项目文件或者界面卡顿怎么办
使用Scratch桌面版时,最常见的问题是打开别人传过来的.sb3文件后,某些角色或音效莫名丢失。这里要说一个坑:Scratch官网的兼容性滤镜非常严格,从网页版导出的项目,依赖网络资源(比如某些在线图像链接)的部分,离线打开时很可能变成空白。
解决思路很简单:把项目打包前,把所有素材都重组进项目内,不要依赖外部URL。导入图片、声音时要通过本地文件导入,不要从网页拷贝一个链接挂上去。另外,如果孩子在家里做好一个项目带到学校机房打开,尽量用相同大版本号的Scratch。3.0的.sb3文件拿到2.0的离线版里是打不开的,这个版本兼容问题经常被忽略。
还有一类情况:电脑配置明明不差,但Scratch运行时风扇狂转、画面迟滞。这个多半是项目中用了大量克隆对象或者高分辨率背景图。Scratch引擎处理克隆对象时计算压力不小,如果同时存在几百个克隆对象,再叠加持续侦测,卡顿几乎是必然的。解决办法是限制克隆体的数量,或者用“限制在某个X坐标范围内消失”这类优化逻辑。这个优化思路本身就是一次很好的编程练习。
4.2 变量和条件判断为什么孩子总是学不会
如果孩子在一两个月学习之后,碰到变量和条件判断还是满头问号,先别急着断定“不是这块料”。回顾一下教学过程,通常问题出在“概念先于经验”。很多教学一上来就讲定义,孩子没有经历过一个“非要用变量不可”的场景,自然记不牢。
我自己的实践方式是,先给孩子一个完成但有小需求的项目,比如“小猫走到舞台边缘时要掉头”,让孩子先尝试固定移动,再引导他思考“怎么知道已经碰到边缘”,他自然会用上侦测和条件判断。这时候把“如果...那么”积木拿出来,讲两句规则,不用多。这种教学顺序,是让概念从需求中生长出来,而不是反过来。
条件判断还有一个孩子特别容易踩的坑:条件条件的顺序问题。多条件并行时,Scratch的代码是自上而下执行的,一旦前面条件被满足,后面的就不会再运行。很多孩子写完代码发现“为什么明明没吃到金币也显示加分‘,’就是因为把‘碰到金币’和‘碰到敌人’的条件顺序写反了。要带孩子排的是一种执行顺序理解,而不只是语法理解。
4.3 项目源码复用与原创能力的平衡
很多Scratch学习者会在社区、网盘里找“植物大战僵尸源码”“中秋主题源码”,拿回来改一改就宣布完成。这个做法本身没有错,Remix是Scratch社区文化的重要一部分。但如果一直停留在“找别人源码改改参数”的状态,编程能力很难真正进步。
我的建议是定一个“三层过滤”规则。第一层,拿到源码先看整体流程:它有哪些角色、主要用什么机制,先用Scratch的“单步执行”功能走一遍,写一段角色和流程梳理。第二层,改一个核心机制,比如把“随机出现僵尸”改成“按关卡配置表出现”,这需要理解变量列表和条件逻辑。第三层,尝试从零开始做一个简化版本,只保留核心机制,其余全部自己拼积木。能独立完成第三层,这个项目的价值才真正内化成能力。源码可以抄,但“抄完之后把它们变成自己的”,这个过程不能省。
5. 从发明者视角延伸:怎么给孩子选路线
5.1 Scratch、Scratch Jr和Python:什么时候切换
“Scratch Jr desktop”“编程scratch”这两个热搜词背后,是两类很典型的学习者:低龄儿童和小学生。Scratch Jr是Resnick团队面向5到7岁儿童做的简化版,界面更少、积木类型更少、没有变量和克隆,核心目标是让孩子理解“顺序和事件”。如果孩子已经具备基本阅读能力、能理解加减和大小比较,直接用Scratch也是可以的。
我见过很多家长让一年级的孩子直接学Scratch,结果孩子连角色造型切换和坐标位置都搞不清,学得很痛苦。这不是孩子能力差,而是工具和孩子当前认知阶段不匹配。建议是有幼儿园中大班基础的孩子可以先用Scratch Jr,到二年级之后逐步切入Scratch。有两个明显的信号说明该切到完整版Scratch了:一是孩子在Scratch Jr里开始反复询问“能不能让分数再增加一个条件”,二是对“变量”这种概念产生了自然的好奇。
至于从Scratch转到Python的时机,没有统一答案。我的经验是,孩子能在Scratch中独立完成包含克隆、变量、列表交互综合运用的项目后,再转文本型语言比较顺畅。很多孩子小学四五年级转入Python会遇到的问题是“不知道怎么写”,其实他们知道算法怎么做,只是语法不熟。这种时候文本语言的切换只差一个熟练度问题,不需要重新学逻辑。
5.2 家长和老师能做什么,不要做什么
接触过大量真实家庭案例后,我越来越觉得Scratch教育中最关键的变量不是工具,而是家长和老师的介入方式。一个孩子能否在Scratch里深入下去,往往取决于周围成年人能不能忍住不去“纠正”。
这里有一条很实用的原则:优先问孩子“你想做什么”,其次问“你做的东西怎么运作”,最后才是“这个该怎么改”。孩子想做植物大战僵尸,老师可以引导他拆解成“植物选择、僵尸生成、胜负判定”三个环节,但不要直接把答案给出来。家长在孩子卡住时,最容易犯的错是替代孩子去点击鼠标。你替他解决了问题,也就替他拿走了思考机会。
还有一点,Scratch项目展示环节特别重要。别只让作品“完成”了就能,带着孩子做一次项目展示,讲讲里面哪一个功能是自己最满意的,哪一行积木曾经卡住过自己。这个过程会培养元认知能力,让孩子回头看自己做过的代码,而不只是闷头往前拼。Resnick那套“想象、创造、玩耍、分享、反思”的循环,最后一步“反思”在现实教学里最容易被砍掉,但恰恰是它决定了孩子的学习深度。
5.3 用“发明者的思路”来看待任何编程工具
回到最初的问题:知道Scratch发明者是谁,到底有什么用?我觉得最大价值不是背下“Mitch Resnick”这个名字,而是理解他那一套设计思路。所有伟大的教育工具,核心都不是功能堆得越多越好,而是能不能让学习者“低门槛进入、高水平发展、自由地表达”。
我近年在看很多新编程工具、AI学习平台时,会下意识用这套标准去衡量:它是否给孩子留出了自由创造的空间?它是否能把抽象概念变成可操作的具体体验?它是否允许孩子出错并从错误中学习?这三个问题,比工具本身是不是热门、是不是“官方推荐”重要得多。
Scratch能流行十几年,不是因为MIT的牌子,而是因为它真的做到了让数以千万计的孩子在写代码的过程中,体会到创造的乐趣和价值。你看完这个发明者的故事之后,不管接下来是带孩子配一台机器装Scratch桌面版,还是陪他一起查一份中秋项目的源码,多做的那一点点关注和引导,就已经是这笔传承接力中你作为教育者可以发挥的角色了。