为什么大语言模型还真不能自己写软件 —— Zed 博客 作者:Conrad Irwin,2025/8/14
我这几年面试了不少程序员。面试这活儿挺难的,我也没啥完美的方法。但因为老干这事儿,就逼得我思考:一个靠谱的程序员,到底在干嘛。
你要是看一个熟练的工程师写代码,会发现他们反复在干这几个步骤:
1. 在脑子里搞清楚需求到底想干啥
2. 写段(可能能跑?)的代码
3. 在脑子里搞清楚这段代码到底在干啥
4. 找出差异,然后改代码,或者干脆改需求
不同人做法不一样,但厉害的工程师有一个共性:他们能在脑子里建模,而且能一直维护这个清晰的模型。
那 LLM 呢?
说实话,大语言模型写代码还行。你指出问题,它也能改一改。甚至它能模仿工程师的动作:读代码、写测试、跑测试、加日志,甚至(看起来好像)能调试。
但它最大的硬伤就是:没法在脑子里维持清晰的模型。
它会自信满满地以为自己写的代码一定能跑。测试挂了,它完全搞不清是改代码还是改测试。要是越搞越乱,它就直接全删了重新来一遍。
这跟我想要的工程师,完全相反。
程序员是边写边测的。测试挂了,他们会回想自己的理解:是需求有问题?是代码有 bug?还是先收集点更多信息再决定?他们要是真删了重来,也是因为对问题有了更深的认识。
那以后会不会好?
会不会有一天 LLM 能做到呢?也许吧。但这恐怕得从模型底层的训练方式和优化逻辑上来大改。
因为写软件靠的不只是“能生成代码”。
人类遇到问题时,可以把脑子里一大堆上下文暂时“存起来”,专心解决眼前的问题,再切回去继续搞。而且我们还能随时放大缩小视角:要么盯细节,要么看大局,来回切换。我们不会傻乎乎地一直往上下文里塞更多细节,因为那会把自己逼疯。
而 LLM 有几个硬伤:
* 容易漏上下文:该考虑的东西没考虑到。
* 近期偏差:只盯着最近的上下文,忘了前面说过啥。
* 幻觉:会莫名其妙捏造一些没的东西。
这些问题也许能慢慢解决,比如加点“记忆”机制。但眼下来说,它们还真没法像人类一样维持清晰的双模型(需求模型 vs 代码模型),然后对比、调整、修正。
那现在该怎么办?
大语言模型当然有用。它能帮你快速生成代码,也能帮你总结需求和写文档。对于一些很简单、需求特别清晰的小活儿,它能一次搞定。
但只要稍微复杂点,它就会因为上下文记不住、理解不到位,没法像人一样迭代出靠谱的解决方案。最后还是得靠你,作为工程师,去保证需求搞清楚,代码真能跑通。
在 Zed,我们相信未来人和 AI 能一起协作写软件。但至少现在,你得是掌舵的人,LLM 只是个工具。