Synth Daily

为什么大模型造不出真正的软件

有效的软件工程依赖于构建和维护关于“需求”和“实际代码”的清晰心智模型。尽管大型语言模型(LLM)擅长生成代码,但它们缺乏维持和比较这两种心智模型的能力,导致在处理复杂问题时容易混淆、无法有效迭代。因此,目前 LLM 只是一个辅助工具,而不能替代人类工程师来真正地“构建”软件。

优秀软件工程师的核心能力

高效的软件工程师在工作中会不断循环以下步骤,其关键在于他们建立和维护清晰心智模型的能力。

  • 建立需求的心智模型:理解要做什么。
  • 编写代码:将想法转化为实际代码。
  • 建立代码的心智模型:理解写出的代码实际上在做什么。
  • 识别差异并修正:比较两个模型,找出不一致的地方,然后更新代码或调整需求。

大型语言模型(LLM)的局限

LLM 在编写和修改代码方面表现不错,但它们无法做到最关键的一点:维持清晰的心智模型

当 LLM 遇到问题时,它们会陷入混乱:

  • 它们会假设自己写的代码能用
  • 当测试失败时,它们只能猜测是该修代码还是修测试。
  • 当感到“沮丧”时,它们倾向于删除一切然后重来

这与优秀工程师的做法恰恰相反。工程师在遇到挫折时,会借助心智模型来判断问题所在,或者通过与他人交流来理清思路。即使需要推倒重来,他们也是在对问题有了更深刻理解之后才这样做。

未来的挑战与障碍

要让模型具备这种能力,可能需要改变它们的构建和优化方式。人类在解决问题时,可以暂时“搁置”全部上下文,专注于一个具体问题,解决后再“调回”之前的思维状态。我们不会无休止地向大脑里填充信息,因为那会让人发疯。

目前的生成模型存在几个直接影响其维持心智模型能力的问题:

  • 上下文遗漏:模型很难发现被忽略的上下文信息。
  • 近期偏见:它们在处理信息时,会过度关注最近输入的内容。
  • 幻觉:它们常常会虚构出本不应存在的细节。

由于这些问题,LLM 在超出一定复杂度后,就无法真正理解发生了什么。它们无法同时维持两个相似的“心智模型”,找出差异,并决定是更新代码还是调整需求。

结论:人机协作,而非替代

毫无疑问,LLM 对软件工程师很有用。它们可以快速生成代码、整合需求和文档。对于一些简单、明确的任务,这已经足够了。

然而,对于任何有一定复杂度的项目,它们都无法足够准确地维持上下文,从而迭代出一个可行的解决方案。最终,你,作为软件工程师,仍然需要负责确保需求清晰,并验证代码是否真正实现了其声称的功能。

人类仍然是主导者,而 LLM 只是你可以使用的另一种工具。