编程界的「西西弗斯神话」正在被改写。隔壁山上的人开始用起重机——准头堪忧,偶尔砸到观众,但确实快得多。Lobsters社区用户 tmcb 用这个比喻精准概括了当下最激烈的技术争论:AI编程工具到底是解放了程序员,还是毁灭了他们不知不觉学习的能力?
这场争论的导火索是一篇名为「On AI」的博文,由程序员 Joshua Stein 发表在 jcs.org 上。文章讲述了作者从观看 SerenityOS 操作系统作者 Andreas Kling 的直播编程,到自己用 8MHz 的经典 Macintosh 电脑编程的亲身经历,反思了一个核心问题:当 AI替你写下所有代码,你还剩下什么?
由于 jcs.org 目前宕机无法直接访问,但这丝毫不影响讨论的热度。在 Lobsters 社区,该帖获得了86个投票和超过40条评论,并被标记为「vibecoding」标签——这个标签通常只用于那些触及AI编程本质的热门话题。
图片来源:Unsplash。现代编程环境中AI工具已成为常态,但学习的代价正在被忽略。
丧失「顺便学习」的能力
Lobsters用户 duck_tape 的评论一针见血:「LLM替我们写代码后,我们失去了『顺便学习』的机会——那些在实现功能时无意间习得的知识,现在被魔术般地抹掉了。」
「顺便学习」(incidental learning)是一个心理学概念,指人们在完成主要任务的过程中,意外地、无意识地学到了其他知识。这在编程领域表现尤为突出:一个程序员要写一个排序算法,动手查资料、理解不同排序的时空复杂度、调试边界条件、最终跑通。在这个过程中,他不仅完成了任务,还理解了算法背后的原理、编程语言的特性、甚至调试工具的使用技巧。
笔者的亲身经历可以佐证:十年前第一次写Web应用时,为了让一个表单正确提交,花了两天时间折腾HTTP请求和响应。痛苦,但从此对HTTP状态码的理解刻进了骨头。
AI编程助手改变了一切。你在终端里输入「帮我写一个用户登录功能」,Claude Code 或 Cursor 在几秒内生成几十行代码。登录功能能用了,测试通过了,部署上线了——但你学到了什么?什么也没学到。你对HTTP、Session、Token、加密的理解仍然停留在你输入prompt之前的状态。
这正是 Joshua Stein 在其博文中表达的困境。他写道,Andreas Kling 在直播中写 SerenityOS 时,虽然用了带自动补全的 Qt Creator,但每一个决策、每一次调试都是在公开思考中完成的。而当他给自己设下规则——只用经典Macintosh编程——他被迫面对系统的每一个细节,因为没有任何AI可以帮助他。
效率与学习的零和博弈
这是不是一个「AI写不好代码」的问题。恰恰相反,AI写得又快又好——至少在大多数常见场景下如此。问题在于:当AI替你跳过了整个「踩坑」过程,你也就跳过了成长的必经阶段。
计算器是最经典的类比。一个小学生用计算器可以瞬间算出 372×489 的答案,但他失去了什么?失去了心算过程中对数字关系的感知、对乘法分配律的理解、对进位借位的操作直觉。一个只会按计算器的孩子,无法发现「我按错了数字」——他对结果是否合理没有判断力。
编程也是一样的道理。Anthropic 在2026年1月发布的一项随机对照实验研究证实了这一点。研究让程序员在有和没有AI辅助的情况下学习一个新的Python库,结果发现使用AI辅助的组在后续测试中的掌握度显著低于对照组——学习效果下降了约17%。AI让完成任务的速度提升了,但深度理解被打了折扣。
图片来源:Unsplash。IDE中的AI代码补全让写代码更快,但开发者对代码的理解可能同时变浅。
持效派的声音:工具从来都是这样演进的
并非所有人都认同「AI毁灭编程能力」的叙事。支持AI编程的一派认为,每一次技术革命都伴随着「那不是真正的学习/工作」的指控。
曾在汇编时代写程序的老程序员,看C语言也是「太高级了,程序员不再理解底层」;C++被批评为「隐藏了内存管理的细节」;Python被嘲笑为「可执行伪代码」。每一层抽象都在某种程度上「消灭」了上一代程序员赖以生存的「顺便学习」机会,但软件开发行业的整体能力并没有因此衰退,反而因为抽象层次的提高而得以建造更复杂的系统。
支持者认为,AI编程工具带来的学习内容变了。当AI可以处理样板代码和常规实现时,程序员可以花更多精力在系统架构、需求分析、用户体验等高层次问题上。一个使用AI的程序员,是在重新分配注意力。
知识债务:不会自己消失的隐患
但问题在于,高层次的理解真的能脱离底层知识而存在吗?
arXiv上刚刚发表的一篇论文「Agents That Teach: Towards Designing Incidental Learning Back into AI-Assisted Software Development」(2607.06101)提出了一个有力的概念框架。该论文将在2026年10月的国际自动化学术会议(ASE ‘26)上发布,系统性地分析了AI编程代理对学习过程的影响,并首次提出了「知识债务」(Knowledge Debt)的概念。
「知识债务」是开发者层面的「技术债务」。当AI代理执行了那些开发者不能完全理解的代码变更时,这些理解缺口会随着时间的推移而累积。今天AI帮你解决了一个你不理解的bug,明天它又生成了一段你不理解的优化。一年后,你拥有一个跑得很好的系统,但你无法真正维护它。你无法为它添加新功能,因为你不知道它在怎么工作。
论文提出了六个设计原则,试图在不破坏AI效率的前提下,将学习机会重新嵌入到开发者与AI代理的交互中。他们构建了一个名为SHIELD的多代理系统,利用AI编程代理自身的推理过程,在适当的时机向开发者呈现上下文相关的学习素材。
知识鸿沟正在扩大
Lobsters社区的争论本质上是关于一个更深层次的问题:如果学习不再是一个「顺便」发生的过程,而是需要有意为之,有多少人会坚持学习?
用起重机运巨石的人确实比西西弗斯快得多。但如果有一天起重机坏了,或者需要搬运一块特殊形状的巨石,而操纵起重机的人从未亲手搬过石头——他能意识到问题的存在吗?他能判断起重机的操作是否正确吗?
ACM在2026年4月发布的「Vibe Coding」技术简报中也提到了类似的担忧:AI生成的代码可能包含不易察觉的逻辑错误,而缺乏深厚编程功底的开发者很难发现这些问题。代码能跑,不代表代码正确;测试通过了,不代表没有安全隐患。
这是整个行业供应链的风险。当越来越多开发者依赖AI生成核心业务逻辑,而对这些逻辑的理解停留在「它说这样写是对的」层面,软件质量的地基正在被悄悄掏空。
图片来源:Unsplash。程序员的视角正在从「如何写」转向「如何向AI描述」,这改变了学习的方式。
没有简单答案
这场争论显然不是非黑即白的。AI编程工具确实显著提升了开发效率,让小型团队有能力完成以前需要数十人才能实现的功能。它降低了编程的入门门槛,让非专业人士也能通过自然语言描述来构建简单的应用。
但效率的代价是深度的流失。当一个工具让你跳过过程直接拿到结果时,你失去的正是那个充满挫败感、但也充满顿悟的过程。
对于个体开发者来说,问题是:你是在用AI加速自己的学习,还是在用AI替代自己的学习?对于行业来说,问题是:如何在拥抱AI带来的效率提升的同时,不被「知识债务」压垮?
Joshua Stein 的答案——至少在个人层面上——是回到8MHz的Macintosh,在没有AI的旧世界里重新学习编程的本真。但对于整个行业来说,这条路显然不可行。论文作者们的答案是重新设计AI编程系统,让它们不仅能替你写代码,还能教你怎么写。
但这些都还是方向,不是解决方案。真正的问题也许更简单:当一个工具好用得让人不再思考,我们还有勇气放下它吗?
参考链接:
- Lobsters 讨论: On AI (86 △)
- jcs.org: On AI
- arXiv: Agents That Teach (2607.06101)
- Anthropic: How AI Assistance Impacts Coding Skills
- ACM TechBrief: Vibe Coding (April 2026)