Carmack 质疑 Scratch:视觉编程真能通向成功的编程生涯吗?
Carmack 质疑 Scratch:视觉编程真能通向成功的编程生涯吗?
事件概述
2026 年 8 月 31 日,id Software 联合创始人、VR 技术先驱 John Carmack 在 X 上提出了一个引发讨论的问题:
我仍然看到 Scratch 这种“可视化编程”环境被定位为儿童进入编程世界的一条入门路径,但与游戏模组(game modding)不同,我从未听说过哪个“成功故事”把早期的 Scratch 经历视为自己成就一番事业的关键。有人有例子吗?
这条推文被 Hacker News 首页收录,目前获得 18 分、5 条评论。Carmack 的质疑点很直接:同样是面向初学者的编程入口,游戏模组孕育了大量后来的开发者,而 Scratch 似乎并没有被任何资深工程师当作职业起点的关键因素。
关键讨论点
Carmack 的疑问:Scratch vs. 游戏模组
Carmack 的对比对象很有意思:游戏模组。在 Doom、Quake 时代,大量年轻人通过修改游戏配置文件、编写脚本、制作关卡,逐步理解了引擎逻辑和底层系统,并最终走上专业开发道路。Carmack 本人就是这一路径的代表人物之一。
相比之下,Scratch 虽然降低了编程门槛,让学生通过拖拽积木就能完成动画、小游戏和交互叙事,但 Carmack 认为它缺少一种“成功故事”的叙事——几乎没有成年人会把自己的职业生涯归功于 Scratch。
社区回复中的三种声音
第一类:Scratch 是过渡,不是终点。
用户 @GabiiAH11 回复说:“我见过的每一个 Scratch 成功故事,都是孩子对 Scratch 感到厌倦,然后在一个月内转向 Python。” 这句话暗示,Scratch 的价值可能不是它本身,而是让学习者快速意识到“积木不够用”,从而主动走向文本编程。
第二类:真正重要的可能是社区,而不是编辑器的形式。
用户 @trev3d 提到,可汗学院(Khan Academy)提供过一个类似的环境,虽然也是教学导向,但它是基于文本的,并且允许用户发布和分享程序与游戏。他说:“如果没有它,我的人生轨迹可能会完全不同。” 这似乎说明,关键不是“可视化”,而是“创作 + 分享 + 社区反馈”的循环。
第三类:家长用“真实系统”代替可视化入门。
用户 @yacineMTB 分享了自己教育孩子的方案:把孩子想要的东西(例如一个音乐视频)放在一个模拟 Unix 系统之后,让孩子通过解决挑战来解锁。他准备了一台 Raspberry Pi 键盘电脑,配置好 SSH 密钥,并连接到电视上,实测延迟约 100ms。这种做法不是把系统简化,而是直接让孩子面对真实环境,通过游戏化机制激励他们解决问题。
对数据科学与 AI Agent 落地的意义
Carmack 的质疑并不只是关于少儿编程。它同样指向数据科学和 AI Agent 领域的“低门槛工具”:
- 数据科学中的 AutoML、拖拽式建模工具,是否也会留下类似的“没有成功故事”困境?很多人用工具快速跑了模型,但真正解决复杂业务问题的能力,往往来自底层的数据思维和编程功底。
- AI Agent 的低代码/无代码搭建平台正在大量出现。它们让非工程师也能组装一个 Agent,但也可能像 Scratch 一样,让人停留在“能跑通 demo”的阶段,却无法深入处理工具调用、上下文管理、错误恢复等真实工程问题。
- 社区反馈和真实环境的作用值得强调。Khan Academy 案例暗示,分享和展示自己的作品,能极大增强学习者的内驱力和长期投入;Unix 家长案例则说明,直接面对真实系统,哪怕有挫败感,也可能比过度简化的环境更有后劲。
如果 AI Agent 领域不想变成“成年人的 Scratch”,就应该尽早提供“逃逸通道”:让用户能从可视化编排界面,顺利切换到代码级调试、API 接入和系统集成,并在社区中形成可追溯的、真正落地的项目案例。
我的技术点评
我大体认同 Carmack 的观察,但也要补充一些边界条件。
Scratch 在培养抽象思维、事件驱动逻辑和基础算法意识上,确实有正面作用。问题是,这些认知能力并不只有 Scratch 能提供,而且 Scratch 的环境太“温和”,缺少真实世界的约束和反馈。游戏模组之所以有效,是因为它一开始就面对一个复杂的、半开放的系统:你需要读懂别人写的代码,理解引擎机制,并在有限条件下做出创新。这种“在限制中创造”的体验,和 Scratch 的“自由拼积木”是完全不同的。
另外,“没有成功故事”也可能是一种幸存者偏差。很多成年人回顾童年,不会特地说“我是靠 Scratch 成功的”,因为后来的学习经历(大学、工作、开源项目)早已覆盖了那个起点。但这并不代表 Scratch 没起作用。真正的科学问题不是“有没有人感谢 Scratch”,而是“使用 Scratch 的群体中,进入编程职业的比例是否显著高于不使用 Scratch 的群体”。目前原文未说明是否有这类数据。
至于那位用 Unix 挑战来教育孩子的家长,我觉得这更像 Carmack 精神的做法:把真实世界的复杂性作为学习材料,而不是先打造一个虚假的简化版。对于 AI Agent 时代,这也是一个警醒——不要让低代码平台成为另一个“Scratch”。门槛低是好事,但如果缺少通往复杂系统的桥梁,那么它培养出来的可能不是工程师,而只是工具的用户。
