机械荟萃山庄

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 81|回复: 0

为什么大语言模型无法真正构建软件

[复制链接]

2万

主题

2万

帖子

19万

积分

超级版主

Rank: 8Rank: 8

积分
191372
发表于 2025-8-23 12:44:12 | 显示全部楼层 |阅读模式
50%的AI生成代码其实是无用的。每次代码修改都有一半概率引入新bug,如果LLM同时进行多处更改,潜在问题会呈指数级增长。真正可靠的方式是:一次一个改动,严格测试。

那些号称“一键生成任何框架应用”的工具往往靠不住。以Python和JavaScript混合编程为例,连基本的依赖管理和语法规范都难以把控。只有建立专门的语言解析器和验证机制才能确保稳定性。
光是实现一个“Google登录+个人资料页面”这样的基础功能,就足以让大多数AI工具陷入OAuth流程、重定向URI等技术细节的困境。关键是要找到既安全又便捷的解决方案。
数据库变更是个大问题。每次修改都可能导致AI混乱,产生错误的迁移文件。需要专业的数据库管理机制来确保平滑升级。
当下付费使用AI编程工具存在诸多风险:代码被随意删改、重复生成、偏离需求,甚至制造更多bug。一个括号位置的错误就可能导致整个页面崩溃。

作者:Conrad Irwin
原文链接:https://zed.dev/blog/why-llms-cant-build-software

我花了大量时间做的一件事就是面试软件工程师。这显然是项艰巨的任务,我不敢说自己有什么绝招;但这段经历确实让我有时间去反思,一个高效的软件工程师究竟在做什么。
当你观察一个真正的行家时,你会发现他们总在循环执行以下几个步骤:
  构建一个关于需求的心智模型(Mental Model)。
  编写(希望如此?!)能够实现需求的代码。
  构建一个关于代码实际行为的心智模型。
找出两者之间的差异,然后更新代码(或需求)。
完成这些步骤的方式有很多种,但高效工程师的过人之处,就在于他们能够构建并维持清晰的心智模型。



平心而论,大语言模型在编写代码方面相当出色。当你指出问题所在时,它们在更新代码方面也做得不错。它们还能做所有真人工程师会做的事:阅读代码、编写并运行测试、添加日志,以及(大概)使用调试器。
但它们无法做到的是,维持清晰的心智模型。
大语言模型会陷入无尽的困惑:它们会假设自己写的代码真的能用;当测试失败时,它们只能猜测是该修复代码还是修复测试;当感到挫败时,它们干脆把所有东西删掉重来。



这与我所期望的工程师特质恰恰相反。
软件工程师会边工作边测试。当测试失败时,他们可以对照自己的心智模型,来决定是修复代码还是修复测试,或者在做决定前先收集更多信息。当他们感到挫败时,可以通过与人交流来寻求帮助。尽管他们有时也会删掉一切重来,但那是在对问题有了更清晰理解之后才会做出的选择。
但很快就行了,对吧?



软件工程需要的模型,不仅仅是能生成代码那么简单。
当一个人遇到问题时,他们能够暂时搁置全部的上下文,专注于解决眼前的问题,然后再恢复之前的思绪,回到手头的大问题上。他们也能够在宏观大局和微观细节之间自如切换,暂时忽略细节以关注整体,又能在必要时深入研究局部。我们不会仅仅因为往自己的“上下文窗口”里塞进更多词语,就变得更高效,那只会让我们发疯。



即便我们能处理海量的上下文,我们也知道当前这些生成式模型存在几个严重的问题,这些问题直接影响了它们维持清晰心智模型的能力:
下文遗漏:模型不擅长发现被忽略的上下文信息。
新近度偏见:它们在处理上下文窗口时,会受到严重的新近度偏见影响。
幻觉:它们常常会“幻想”出一些本不该存在的细节。
这些问题或许并非无法克服,研究人员也正在努力为模型增加记忆,让它们能像我们一样施展类似的思维技巧。但不幸的是,就目前而言,它们(在超出一定复杂度后)实际上无法理解到底发生了什么。
它们无法构建软件,因为它们无法同时维持两个相似的“心智模型”,找出其中的差异,并决定是该更新代码还是更新需求。



显然,大语言模型对软件工程师来说很有用。它们能快速生成代码,并且在整合需求和文档方面表现出色。对于某些任务来说,这已经足够了:需求足够清晰,问题足够简单,它们可以一蹴而就。
话虽如此,对于任何有点复杂度的任务,它们都无法足够精确地维持足够的上下文,来通过迭代最终产出一个可行的解决方案。你,作为软件工程师,依然需要负责确保需求清晰,并保证代码真正实现了其宣称的功能。
在 Zed,我们相信未来人类和 AI 智能体可以协同构建软件。但是,我们坚信(至少在目前)你才是掌控方向盘的驾驶员,而大语言模型只是你触手可及的又一个工具而已。


点评
大模型有海量知识,但缺乏海量的推理模式,这种或大或小的思维经验和模式是人脑在实践中慢慢积累的,而大模型仅仅是在推理中尝试发现这些碎片化思维块,但它既不知道是否发现了正确的思维链路也没保存?方法论是人脑思维比知识更重要的东西。大模型啊,你也是读了这么多书但依然干不好活儿啊。
编程和代码其实是两个概念,代码可能只占精力的20%,编程的本质在于如何将现实世界的需求,找到或不得不创造一种新的解决方案。大模型目前可以比较好的将人类架构师或者设计师找到的/设计的方案变成高级语言代码,但是短期内基本无法处理更高一层的抽象。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|机械荟萃山庄 ( 辽ICP备16011317号-1 )

GMT+8, 2025-9-1 15:56 , Processed in 0.086050 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表