一个从没带过班的程序员,拿到12次课、每次1小时的窗口,要教一群初高中生编程。他没选Python,也没选Scratch,选了几乎没人在生产环境里用的Forth——一门1970年出生、连不少资深程序员都绕着走的堆栈语言。
课上完了,学生做出了像素画,课程也算跑通。但他复盘时说了一句更值得记的话:语言选对没那么重要,能不能马上看到结果、自己动手试错,才是这12小时真正教会人的东西。这句话之所以值得记,是因为它戳中了编程教育常年回避的一点——课时永远不够,语言选择却总被讲得比反馈机制重要。
12小时怎么塞进一门冷门语言
选Forth不选Python,理由很实际:语法几乎不存在,基础不同的学生能站在同一条起跑线;网页里就能跑,不管学生电脑是什么系统都能用。他还试过用Rust自己写一个Forth解释器塞进网页,结果调试超预算,最后换成了现成的教学环境Easy Forth。
| 项目 | 内容 |
|---|---|
| 授课对象 | 初高中生 |
| 课时安排 | 12次课,每周1小时 |
| 课后作业 | 基本没有 |
| 教学工具 | 纸盘模拟栈 + Easy Forth网页环境 |
| 最终成果 | 修改内置贪吃蛇、创作像素画 |
进入正题前,老师先干了件反直觉的事:不碰电脑,先发纸盘。学生把数字写在盘子上,一层层叠、一层层揭,模拟"后进先出"的数据栈,自己当了一回人肉Forth解释器。
练熟了才上电脑,跟着Easy Forth的教程一路推进,最后一课让学生改内置的贪吃蛇游戏,自由创作像素画收尾。
复盘:纸盘管用,但栈排得太靠前
Forth语法轻,可它把数据栈这种很多程序员工作时都刻意藏起来的底层结构,直接摆在了孩子面前。对第一次接触编程的人,这未必友好——栈的抽象层级,比"点一下精灵就动"要绕好几层。
如果重来,他更想选Scratch:控制流、变量、函数照样能教,反馈更直接,不用先啃数据结构。
| 维度 | Forth(实际教学) | Scratch(复盘后更想选) |
|---|---|---|
| 语法门槛 | 几乎为零 | 几乎为零 |
| 部署方式 | 免安装,网页里跑 | 免安装,网页/App都能跑 |
| 反馈速度 | 先理解栈,才能看到效果 | 拖一个积木就有动作 |
| 底层机制 | 提前暴露"后进先出"的数据栈 | 藏在积木背后,不强制看见 |
| 更适合 | 已有基础、想理解底层的学生 | 零基础启蒙,少走弯路 |
语言只是外衣,能不能动手试错、马上看见结果,才是骨头。
这份坦白在教育类文章里不算常见。太多人喜欢把一次小班实验包装成"某教学法被证明有效"的通稿结论,这篇没有——作者反复提醒自己,这只是一次12小时的观察,不是实证。
这事对谁有用,该怎么用
对编程教师:课时短、学生基础参差,别急着奔着"教一门语言"跑。先想清楚要保留哪种体验——是马上看见效果,还是理解底层怎么运作。启蒙阶段,Scratch这类拖拽工具通常反馈更快;等学生写过几段真实代码,再上Forth这类暴露底层的语言,会更容易接住。
对家长和关注AI时代技能的开发者:这次复盘真正提醒的是,"动手试错"正在变得稀缺。孩子如果第一次写代码就靠AI生成,他跳过的不是语法,而是报错、改、再报错这段最原始的训练。这不是说AI辅助编程有害,但启蒙阶段如果完全外包给AI,课堂上"看着自己代码跑起来"这段经验,可能根本没机会发生。
接下来值得观察的变量,是同一批学生手边如果多一个AI编程助手,还会不会愿意花时间叠纸盘、模拟数据栈——还是直接问AI"栈是什么",拿到答案就跳过这一步。这门课能不能复制,不取决于Forth,而取决于愿不愿意留出这12小时,把答案往后拖一拖。
这门课真正稀缺的资源,从头到尾都不是Forth,而是一个愿意备课、改教具、拿纸盘模拟数据结构的人,站在教室里教。12小时选一门冷门语言,答案不是哪门语言更好教,是有没有人愿意花这12小时,把复杂的东西拆开给你看。
【锐评】工欲善其事,必先利其器——但教育要磨的不是语言,是敢动手试错的手。
