昨天让 Claude Code 全自动写了一个 FC/NES 模拟器。讨论架构花了 1 小时,然后它自主执行 19 个任务,除了权限确认之外零人工干预,1 小时后马里奥和魂斗罗都能跑了。
它之所以能做到,是因为这些代码已经被人类写过很多遍。表面上看是 AI 学会了怎么写模拟器,但本质上是它替人类永久保存了这些知识,并且可以代替人类全自动复现。
二十多年前软件行业有一个梦想:所有基础功能都会被实现为可复用的模块,做新软件时只需要像搭积木一样组合。这个梦想随着开源文化的发展实现了一小部分,但远没有达到当初设想的程度。
真正的难点不是没人写模块,而是模块之间的连接成本——接口适配、版本兼容、上下文特化——往往超过模块本身。所以「搭积木」从来没有真正轻松过。
而今天 LLM 以一种极其「混沌」的方式变相实现了我们二十年前的梦。但它并没有实现代码级别的精确模块化,而是通过学习这些代码的 pattern 后重新生成来获得等效的结果。当然它也会正常地复用开源组件,但那些没有现成模块的部分,它靠模式复现来填补。
从逻辑上看,学习 pattern 再重新生成是严重的绕远路——相当于为了复用一个函数,先读遍了人类写过的所有代码,然后凭记忆重写一个功能等价的版本。这个额外成本是荒谬的。
所以这是一种「混沌」的做法,而不是当年设想的「纯粹」的模块化。但出乎意料的是,这种混沌的做法效果非常好,非常实用,甚至做到了纯粹的做法在现实中根本无法实现的效果——因为它能理解真实需求的上下文,以精确度极高的方式在正确的上下文里复现那些被「保存」下来的人类知识。
换句话说,LLM 实现的不是当年「软件模块化」的梦想,而是「已解决问题的极低成本复现」。这对绝大多数软件开发场景已经是革命性的。但那些从未被解决过的原创设计,或许仍然需要人类来思考。