“代码已死”这句话,可能才是今年 AI 圈最大的错觉

人工智能 2026年3月23日
在“人人都能用自然语言做软件”的狂热气氛里,开发者 Steve Krouse 提出了一个很不合时宜、但很重要的判断:代码不仅没死,反而会因为 AI 变得更重要。我的看法是,AI 确实正在降低编程门槛,但它真正改变的,不是让代码消失,而是把程序员的价值从“写语法”推向“造抽象、管复杂度、做判断”。

过去两年,科技行业里最流行的一句判断,大概就是“代码要没了”。

从大模型能自动补全函数,到一句话生成网页、应用、小游戏,再到“vibe coding”这个词横空出世,很多人开始相信:未来的软件开发,或许就是对着 AI 说人话,剩下的交给机器。学编程?好像已经成了一种会被时代甩下去的旧技能。

但美国开发者、Val Town 创始人 Steve Krouse 最近写了一篇题为《Reports of code's death are greatly exaggerated》的文章,标题借用了马克·吐温那句著名的调侃:关于代码之死的传闻,被大大夸张了。读完之后,我的第一反应是:这不是一篇“程序员自我安慰”的文章,反而像是给整个 AI 行业泼的一盆冷水,而且泼得很及时。

当“感觉差不多”遇上真实世界,Bug 就来了

Krouse 抓住了一个很多非技术人很难意识到的问题:自然语言看起来很精确,实际上经常只是“看起来”。

我们平时说一句“做个支持多人实时协作的文本编辑器”,听上去似乎已经足够明确了。毕竟 Google Docs、Notion、飞书文档大家都用过,脑子里马上就有画面:几个人同时编辑,光标闪来闪去,内容自动同步。这种需求的危险之处就在这里——因为太熟悉,所以它会给人一种错觉:这不就是个很清楚的功能吗?

可一旦你真的动手做,复杂度会像地毯底下的灰一样全冒出来。谁先写、谁后写?断网怎么处理?冲突如何合并?权限怎么控制?消息延迟时界面怎么反馈?撤销操作是按个人算,还是按文档全局算?这些问题,用户嘴上不说,不代表它们不存在。它们只是在等一个最糟糕的时机跳出来,把产品和团队一起绊倒。

Krouse提到一个很典型的例子:媒体人 Dan Shipper 曾用“vibe coding”的方式做出一款文本编辑应用,产品一度爆红,然后很快宕掉。原因并不玄学,就是那句后来被他自己总结出来的话:“实时协作难得离谱。”

这其实正是今天很多 AI 演示最爱回避的部分。生成一个 demo,AI 的确越来越强,十分钟出一个像样的雏形已不稀奇;但把 demo 变成一个能扛住用户、数据、边界条件和线上事故的产品,仍然是另一种生物。前者更像是搭景拍照,后者才是盖房子住人。

AI 不是在消灭编程,而是在暴露复杂度

“vibe coding”这个词之所以流行,是因为它确实说中了某种体验:你不必一行一行敲代码了,可以站在“想法”和“感觉”的层面,边看 AI 产出的结果,边不断修正自己的要求。按钮往左一点、颜色再蓝一点、表单改成三栏……这种创作方式很顺手,也非常上瘾。

问题是,它容易让人误以为:只要我说得像回事,我的需求就已经足够精确。

这正是 Krouse 最核心的提醒。AI 帮助人们更快把模糊想法变成可运行的软件,这当然是好事;但它并不会神奇地抹掉复杂性。相反,它会更快地把复杂性提前暴露出来。你原本可能要写三周代码,才发现需求描述里有一堆漏洞;现在 AI 可能让你在一天之内就撞上这些漏洞。效率提升了,撞墙速度也提升了。

这件事为什么重要?因为它直接决定了未来软件行业里“谁有议价权”。如果把编程理解成“把英语翻译成某种机器能执行的语法”,那 AI 确实会吃掉大量工作;但如果把编程理解成“用严谨的方式组织复杂系统,并为它设计可维护的抽象”,那 AI 反而会让这件事更有价值。

你会发现,今天最有经验的工程师越来越像建筑师,而不是砌砖工。他们真正稀缺的能力不是打字速度,而是知道哪里会塌、哪里会绕晕人、哪里以后一定返工。AI 可以替他们画图、搬砖、算料,但未必能替他们承担判断。

好代码从来不只是产物,它本身就是一种思想工具

Krouse文章里有一个我非常认同的观点:很多人误会了代码,以为代码只是“生产软件的中间步骤”。其实不是。代码本身就是一种思考方式,也是一种知识压缩工具。

这听起来有点学院派,但你只要想想 Slack 那张著名的“通知什么时候触发”的流程图,就会明白。那张图复杂得像地铁线路,普通人看一眼就头大。但后来有人通过更好的抽象,把同样的逻辑重新整理成更清晰的结构。功能没变,复杂性也没消失,可人终于能看懂、能讨论、能修改了。

这就是抽象的力量。

计算机科学历史上,真正改变行业的往往不是“代码变少了”,而是“表达复杂问题的方法变好了”。从高级语言替代汇编,到面向对象、函数式编程,再到 React 改写前端界面组织方式、TailwindCSS 改写样式表达方式,本质上都是在发明更好的抽象层。它们没有消灭复杂度,只是让复杂度变得可驾驭。

所以我一直觉得,“以后大家都不需要代码”这个判断,和“有了相机以后大家都不需要绘画”“有了打印机以后就不需要写作”属于一类误解。技术降低了生产门槛,却没有消灭高质量表达的价值。恰恰相反,门槛越低,真正有结构、有品味、有判断力的作品越稀缺。

在这个意义上,代码很像写作。AI 今天已经能写出一段通顺的文章、像样的邮件、甚至结构工整的评论,但没人会因此得出“记者不需要了”“小说家完了”的结论。大家很清楚,语句通顺不等于思想到位。代码也是一样:能跑,不等于好;能上线,不等于能扩展;能演示,不等于能托付业务。

如果 AGI 真来了,程序员最先做的不会是偷懒,而是“追求更好”

Krouse 还把这个问题推到了更远的未来:假设有一天 AGI 真的出现,机器智能在大多数任务上都接近甚至超过人类,那代码是不是更不重要了?

他的答案是否定的,我也基本同意。

很多关于 AGI 的想象,默认人类会用它制造更多“差不多就行”的东西:更多粗糙产品、更多流水线内容、更多拼装软件。但这其实低估了人的欲望。工具越强,真正有追求的人越不会满足于粗制滥造。摄影器材更高级,并没有让顶级摄影师拍得更敷衍;乐器更便宜,也没有让作曲家放弃编配。强大工具通常会把人的上限拉得更高,而不是把标准拉得更低。

所以如果未来人人都能以极低成本调用“100 个 Karpathy 级别的智能体”,最先发生的事情大概率不是“软件工程消失”,而是大家开始解决那些以前太难、太烦、太不值得碰的抽象难题。比如实时协作库为什么总是难用,状态管理为什么总让人绕晕,全栈框架为什么总在路由、数据加载和部署上相互打架。

Krouse 在文中举了自己的例子:他用 AI 帮助梳理 React Router 7 在 Val Town 上做全栈开发时的一系列难题,并据此做出了一个新的框架原型 vtrr,还展示了一个只有 50 行、放在单文件里的全栈 React demo。这个案例的关键不在于“AI 帮他少写了多少代码”,而在于 AI 帮他跨过了原本卡住他的抽象门槛。

这也是我认为行业最该关注的方向。未来最值钱的,不一定是“会不会写代码”,而是“能不能借助 AI 设计出更好的系统结构”。程序员这个职业也许会被重塑,但不会被抹除。它更像是在从手工业升级为导演、编辑、架构师、审稿人和系统设计师的混合体。

真正该担心的,不是代码消失,而是大家误以为理解已经不重要了

眼下最危险的趋势,不是 AI 生成代码太多,而是越来越多人开始把“不理解”合理化。

反正模型会写、会修、会补,出了问题再问它就行——这种心态短期看很省事,长期却可能让整个软件行业付出代价。因为一套没人真正理解的系统,早晚会在规模扩大、团队交接、业务变形或者安全事故里反噬回来。今天你把复杂度包给 AI,明天复杂度就会连本带利地找上门。

这也是为什么我不太认同“以后不必学编程”的轻率论调。学习编程的意义,从来不只是学一门谋生技能。它训练的是一种能力:如何把模糊想法变成精确规则,如何拆解复杂问题,如何发现边界条件,如何在系统出错时追到根源。就像学写作不只是为了当作家,学数学不只是为了当数学家,学编程也不只是为了当码农。

当然,编程教育本身也该变。死记语法、手搓样板代码的时代确实在过去。未来更应该教的,也许是需求建模、系统设计、测试意识、调试方法、抽象能力,以及如何与 AI 高效协作。说白了,不是“别学编程了”,而是“别再只学 2015 年那套编程了”。

Krouse 文章最后引用了 Dijkstra、Tony Hoare 和 Babbage 的话,谈形式化语言、简洁表达与软件设计。我很喜欢其中隐含的一层意思:精确,不是冷冰冰的束缚,而是人类对复杂世界争取控制权的一种方式。自然语言很美,但它常常允许我们含糊其辞;代码之所以重要,恰恰因为它逼着我们面对含糊,直到没法再糊弄过去。

这件事在 2026 年格外值得重提。因为 AI 越强,我们越容易把“生成”误认为“理解”,把“可运行”误认为“可维护”,把“像成品”误认为“就是产品”。而科技行业这些年最擅长的,恰恰就是把 demo 当成未来,把错觉包装成趋势。

如果说 AI 正在改变编程,那它改变的不是代码是否存在,而是我们终于不得不重新回答一个老问题:软件工程里,真正值钱的到底是什么?我越来越相信,答案不是语法,不是 IDE,不是谁打字更快,而是人如何用抽象去驯服复杂性。只要这个问题还在,代码就不会死。

Summary: 我不认为 AI 会让代码消失,它更可能让“低水平代码劳动”快速贬值,同时把“高水平抽象能力”推到前台。未来的软件开发会更像人与 AI 共同建模、共同设计系统,而不是谁单独把语法敲完。真正会过时的,不是代码,而是把代码仅仅看成打字工作的那种旧观念。
AI 编程代码之死自然语言生成软件软件开发Steve KrouseVal Town大模型vibe coding抽象与复杂度管理Bug