乐于分享
好东西不私藏

软件工程走到尽头了吗?AI写代码之后,我们还在等什么

软件工程走到尽头了吗?AI写代码之后,我们还在等什么

软件工程走到尽头了吗?AI写代码之后,我们还在等什么

过去两年,氛围编程(vibe coding)让写软件变得异常容易。只要用日常语言告诉大语言模型(LLM)想做什么,模型就能生成页面、数据库和一套勉强能运行的程序。一个原本需要专业训练的技能,突然向更多人开放了。

这件事本来应该带来大量新产品。现实却有点冷清。网上多了许多待办事项应用、Wordle 模仿品、周末做出来的小型角色扮演游戏和定制邮件客户端,普通人的日常生活却没有出现同等规模的变化。很多项目能运行,使用价值却很有限。问题也许不在工具,而在于软件能开出的新空间已经没有人们想象得那么大。

“软件已经完成”到底是什么意思

弗雷迪·德布尔(Freddie deBoer)提出了一个很激进的判断。他说,软件的工程工作还会继续,程序员也不会消失,可软件的新类别已经接近用完。

这里的“完成”不是说以后没有新程序,也不是说产品不会更新。通信、计算、存储、检索、模拟和协调,这些软件最重要的功能方向,已经在过去几十年里逐步成形。接下来仍然会有新界面、新皮肤、新版本和更适合特定人群的小工具,只是它们大多属于已有类别的延伸。

这个判断可以拿地图来比喻。地球仍在变化,河流会改道,海岸线需要重新测量,地图也会不断更新。可供探险家第一次发现的大片空白区域已经消失。软件现在面对的情况,可能也接近这个状态。我们仍然在修路、改标牌和维护城市,却很难再找到一整块此前从未出现过的软件大陆。

软件仍在增加,真正能打开新空间的类别却越来越少。

手机还能替我们做什么

我觉得一个简单的问题很能说明这件事。手机现在还有什么合理的事情完全做不到。

很多人的答案最后都会落到已有功能的改良上。键盘更好用,设置菜单更清楚,音乐软件少一点广告,社交平台多展示朋友的照片,交友软件给出更合适的匹配。这些愿望都很真实,也很值得做,但它们属于产品质量、商业决策或平台规则的问题,通常不需要一种全新的软件类别。

有些愿望还会被误认成软件问题。扫地机器人吸不干净,牵涉的是机械结构和传感器。汽车完全自动驾驶,除了代码,还需要冗余系统、道路环境、监管规则和面对突发情况的责任安排。两吨重的物体在真实道路上移动,世界不会因为程序写得漂亮就变得整齐。

所以,软件能做什么和人们希望现实变成什么,中间隔着一层物质世界。很多真正重要的愿望都在那一层里。

为什么 LLM 特别会写代码

大语言模型并没有同样擅长所有工作。代码有一个很特殊的优点,它使用形式化语言,结果可以交给编译器、测试工具或运行环境检查。程序能不能运行,函数有没有通过测试,往往能得到相对明确的反馈。

这让写代码很适合自动循环。模型先生成一版,工具报告错误,模型再修改,直到结果通过检查。氛围编程的兴起,正是因为软件工程存在这种可验证性。

很多工作没有这样的反馈回路。法律判断要经过法官,桥梁能否安全要经过真实的材料、施工和检测,医疗决策要面对复杂的人体和责任。你不能让模型反复运行同一个法官,也不能因为程序通过了测试,就证明一座桥不会坍塌。

这也是我看待 AI 编程热潮时最在意的限制。模型在一个有明确规则的符号系统里表现出色,不等于它已经掌握了现实世界的全部复杂性。

代码有明确的检查回路,模型更容易在生成、测试和修正之间反复迭代。

技术也会遇到 S 曲线

很多技术的发展更像 S 曲线(S-curve),先在实验室里缓慢爬行,随后进入快速普及期,最后在资源、需求或物理限制下逐渐变平。

人在快速上升段里,很容易把最近几年的速度延伸到未来。等曲线进入平台期,过去的记忆还在,宣传也还在,大家就会继续把局部改进叫成新的革命。软件可能已经进入了这样的平台期。

技术当然可能接上一条新的曲线。真空管之后有晶体管,晶体管之后有集成电路,几条曲线叠在一起,才构成了长期的计算进步。软件已经把大量计算可能性铺开以后,下一个问题也变得很具体,系统能不能理解空间、预测物体的变化,并把判断带回现实行动。

“邻近可能”不会无限延伸

生物学家斯图尔特·考夫曼(Stuart Kauffman)提出过“邻近可能”(adjacent possible)这个概念。一个系统每走出一步,就会获得一些此前无法获得的新材料,新材料又会打开下一扇门。生命演化大致如此,技术发展也经常如此。

早期的软件类别很像树枝。电子表格打开了新的计算方式,浏览器打开了新的信息空间,搜索引擎、社交网络和智能手机又在这些基础上长出新的应用。新类别本身会成为后续产品的原材料。

今天常见的习惯追踪器、饮食计划工具和小型工作流应用,当然可能对某个人有用。可它们更像树叶,完成以后很少会成为下一类软件的基础。新东西仍在增加,能继续打开新房间的东西却越来越少。

AI 生成的是数字世界的丰收

这也解释了一个让人不舒服的现象。LLM 可以快速生成文字、图片、音乐、视频和代码,数字内容因此变得极其充足。问题在于,我们本来就已经拥有大量数字内容。

模型最容易处理的材料,往往也是过去的人类已经生产过、整理过、标注过的符号。它可以把已有东西重新组合得更快,却未必能把我们带到癌症治疗、廉价清洁能源、飞行汽车或太空电梯所在的现实世界。

这些愿望需要面对蛋白质、细胞、等离子体、金属、能源和法律责任。代码能帮助研究、模拟和控制过程,却不能单独改写物理规律。把更多资金、注意力和年轻人才投入到代码生成上,能带来效率,也可能让人忽略真正需要长期建设的材料、设备和制度。

数字内容可以快速生成,现实世界的难题仍要经过材料、设备和制度的长期建设。

世界模型,可能是下一扇门

这会把问题推到一个更具体的地方。软件接下来还有没有新的方向,取决于它能不能从处理符号,走到理解空间、预测后果并指导行动。世界模型(World Model)正是沿着这条路在走。它试图在系统内部形成一份关于环境的动态表示,理解物体在哪里、它们怎样运动,以及某个动作可能带来什么结果。

“世界模型”这个词现在覆盖了几种不同功能。渲染器(renderer)负责生成观察结果,比如从文字或动作生成一段视频,重点是画面是否逼真。模拟器(simulator)要生成可以计算和交互的状态,几何结构、材料属性和物理规律都要经得起检查。规划器(planner)接收观察和目标,给出下一步动作。三者都处理空间和时间,输出的东西却不同。

这三种能力要接成一个循环。机器人看到桌上的杯子,只得到一部分观察结果。系统需要估计杯子和桌面的状态,预测机械臂伸过去会不会碰倒别的东西,再决定从哪里抓取。动作执行以后,新的传感器读数会回来,系统据此修正下一步判断。观察、状态、动作和反馈连起来,模型才开始参与真实任务。

其中,模拟器可能是最关键的一环。画面做得像,并不表示系统知道物体会怎样受力、碰撞和变化。模拟器让系统可以在低成本环境里反复试验,也给规划器提供可计算的后果。自动驾驶、工业机器人、建筑设计、工程测试和药物研发,都需要某种形式的模拟。

这也是它能否成为新方向的检验。模拟里的摩擦、碰撞、光照、延迟和传感器噪声,未必等于现实中的情况。三维数据、材料属性和真实动作数据也比互联网视频稀缺得多。模型还要保持长时间的一致性,不能在连续动作中不断积累误差。只有当预测能指导行动,行动又能被现实反馈检验,世界模型才会从“会生成画面”走向“能帮助系统做事”。

世界模型的价值在于形成闭环,让预测经受现实反馈。

软件会结束吗

我不认为软件会停止发展。专业程序员会继续工作,旧系统需要维护,新设备需要控制,企业也会不断为已有产品增加功能。把软件说成“完成”,更像是在描述那些成熟软件类别的边界,而不是宣布这个行业关门。

世界模型就提供了一个很好的反例标准。它不能只在屏幕里生成连贯的视频,也不能只在实验室完成一段漂亮演示。它要能让系统在复杂环境中长期预测、行动、纠错,并把能力带回真实场景。做到这一步,软件就不只是给已有需求换一个界面,而是在获得一种新的现实能力。

我会把世界模型看成一个尚待验证的出口。它可能把软件带进空间理解、物理模拟和具身行动,也可能停在更高级的视觉生成和有限场景演示。前者会改写“软件类别已经接近用完”的判断,后者则只是成熟数字世界里的又一次扩展。判断并不复杂,系统能否在现实中稳定工作。