18 个月至 3 岁:打下基础
在这个阶段,没有任何基于屏幕的编程工具是符合发展阶段的,也不应该有。计算思维的基础,是通过肢体游戏、有规律的日常安排,以及对因果关系的探索来打下的。家长与教育者,正是在搭建编程日后将要栖身其中的认知架构。
这个年龄段有用的活动包括:简单的排序游戏,例如按颜色或大小以重复的规律整理物品;跟随两步指令;以及需要孩子先规划路径再行动的拼图游戏。为幼儿设计的桌游,例如触感卡牌游戏 Robot Turtles,在完全不涉及科技的情况下,引入了「向角色下达指令以到达目的地」这一概念。编程的词汇——「接下来」「如果」「那么」「再试一次」——就从这里开始,由孩子身边的成人自然地说出口。
在 18 个月至 3 岁,最重要的是游戏化的自主性:孩子做出选择、观察结果、并作出调整。这是最原始形态的调试(debugging),也是日后一切编程能力的基础。
3 至 5 岁:初步接触可视化编程
到三岁时,只要课程简短、目标明确、并由成人主导,孩子就已经可以在引导下初步接触基于屏幕的编程工具。这一阶段合适工具的关键特征,是基于图标的操作:无需阅读、视觉提示清晰醒目、并能给予即时而令人满足的反馈。
ScratchJr
ScratchJr 由麻省理工学院媒体实验室(MIT Media Lab)与塔夫茨大学 DevTech 研究小组共同开发,是这个年龄段的黄金标准。它专为 5 至 7 岁儿童设计(不过许多 4 岁孩子在成人陪伴下也能顺利使用),通过彩色的、可拼接的积木——每块积木上是图片而非文字——来控制被称为「精灵」的动画角色。孩子只需按顺序拼接积木,就能让一只猫在屏幕上走动、被点击时跳跃,或说出一句话。这种即时的视觉反馈,极具激励作用。
让 ScratchJr 在发展学上格外合理的,是它的叙事结构。孩子不只是在执行指令,而是在为自己构想的故事导演角色。这把孩子既有的强项——想象力游戏——与正在萌芽的逻辑思维连接了起来。对三语学习者而言,这种「讲故事」的框架尤其能鼓励孩子在环境中的三种语言里都自然使用语言,即便编程本身是无文字的。
编程玩具与不插电活动
除了屏幕工具外,实体编程玩具对 3 至 5 岁的孩子同样具有重要价值。像 Bee-Bot 这样可编程的地面机器人,让孩子按顺序按下方向按键,然后观看机器人执行自己的计划。机器人在空间中的实际移动,让抽象的排序逻辑变得具体、令人印象深刻。这类工具也鼓励协作——常常是两三个孩子一起规划路径、协商步骤,并在成功时一起欢呼。
5 至 7 岁:ScratchJr、Blockly 及更多
这个年龄段的孩子通常正开始识字、精细动作控制能力增强,并能在工作记忆中记住一个多步骤的计划。这使得这一时期非常适合深化 ScratchJr 的使用,并随着阅读能力的提升,引入 Google 的 Blockly 及类似的积木式编程环境。
Blockly
Blockly 由 Google 打造,是一款使用可拼接、带文字标签积木来表示代码的可视化编程编辑器。与 ScratchJr 纯图标式的系统不同,Blockly 引入了真正的编程词汇:循环、条件判断、变量与函数,全都以带名称的积木形式呈现,供孩子拖拽连接。Blockly 设计理念的关键之处在于,它在底层生成的是真实代码,孩子可以切换查看自己搭建内容所对应的 JavaScript 或 Python 版本。这使它成为连接可视化思维与文本思维的绝佳桥梁。
Blockly Games 是基于同一引擎打造的免费益智游戏合集,在课堂环境中尤其实用。每个游戏一次只引入一个新概念——从基本移动到嵌套循环——都以一种近似游戏的方式呈现。完成 Blockly 迷宫系列的 6、7 岁孩子,会对算法逻辑有实质性的掌握,这将在他们日后接触文本式编程语言时大有裨益。
Code.org 与引导式课程
在这个年龄段进行结构化课堂学习时,Code.org 提供了按顺序编排的活动课程,利用孩子熟悉的儿童媒体角色,让编程即刻显得贴近生活。该平台的「编程一小时」(Hour of Code)活动,已在单次课程中带领数百万儿童初步接触积木式编程。Code.org 早期课程的独特之处,在于精心设计的脚手架式教学:每节课都被设计为恰好引入一个新概念,并有足够的重复练习,以便在下一个概念出现之前先将其巩固。
8 岁及以上:向文本式思维过渡
大约在 8 岁左右,大多数孩子已经准备好探索更丰富的积木式编程环境,许多孩子也开始向文本式代码过渡。此时,前几年打下的思维基础,开始明显地开花结果。
Scratch。完整版 Scratch(区别于 ScratchJr)是那些已经不再满足于纯图标界面的孩子自然的下一步。Scratch 使用带文字标签的积木,并引入更丰富的一套编程结构,包括广播、克隆与列表管理。它的项目分享社区,让孩子能够发布自己的游戏与动画,获得来自全球同龄人的反馈,并从他人的创作中获得灵感。这一社交维度带来了真实的动力。
Tynker。Tynker 提供了一套结构上与 Scratch 相似、但增加了主题课程、《我的世界》(Minecraft)模组制作与 STEM 挑战的游戏化编程课程。对那些尤其被游戏制作所激励的孩子而言,它在编程教学之外,提供了强有力的情境吸引力。
通过简化编辑器学习 Python。对于已经熟悉积木式编程、10 岁及以上的孩子,通过 Thonny 或 Mu Editor 等工具温和地接触 Python,往往会有良好的反应。Python 可读性极高的语法——读起来近似于日常英语——使它成为最易上手的第一门文本式编程语言。像猜数字游戏、海龟绘图(turtle graphics)或简单的测验程序这样的项目,能够很快带来令人满足的成果,在这个从直接反馈的角度看,像是「退了一步」的阶段,维持住孩子的学习动力。