本文翻译自 The L in “LLM” Stands for Lying,作者 Steven Wittens。
最近,AI 编程工具引发了激烈讨论。有人认为 AI 让编程变得神奇,也有人认为这只是个”玩具”。Acko.net 的创始人 Steven Wittens 发表了一篇发人深省的文章《The L in “LLM” Stands for Lying》,提出了一个独特的视角:LLM 本质上是在制造”伪造品”。
艺术赝品的启示
文章从一个思想实验开始:想象你是世界顶级的艺术伪造者,能够完美复制任何画作。你的赝品如此精妙,连专家都无法识别。如果这些伪造品流入市场并被当作真品交易,会发生什么?
答案很简单:赝品就是赝品,即使没人发现。艺术的价值不在于视觉表现,而在于其真实性——创作者的意图、创作过程和历史背景。
Wittens 认为,LLM 生成代码的本质与此惊人地相似。即使 AI 生成的代码看起来完美,它仍然是”伪造品”,因为它缺乏真实意图和创造性思考。
代码是负债,不是资产
作者提出了一个反直觉的观点:在软件中,越少越好。这不是极简主义哲学,而是工程现实。
- 每行代码都需要维护:测试、文档、调试、兼容性更新
- 复杂度会累积:代码越多,系统越脆弱
- 技术债务会增长:今天的快速解决方案是明天的维护噩梦
真正的工程技能在于不写代码:通过更好的设计、更简洁的架构、更聪明的决策来解决问题,而不是堆砌更多代码。
开源维护者的困境
Wittens 特别关注 AI 对开源生态的影响。维护者已经开始被低质量的 AI 代码淹没:
- 垃圾 PR 洪水:AI 生成的”贡献”看起来专业,但缺乏真正理解
- 时间消耗:维护者需要花费大量时间审查和拒绝这些”伪造品”
- 信任危机:如何区分真实贡献和 AI 生成的内容?
这不仅是效率问题,更是社区信任的危机。开源依赖人际连接和共同目标,AI 生成的内容破坏了这种信任基础。
解决软件问题 vs 解决真实问题
文章最深刻的部分在于区分两种问题:
软件问题(由之前的解决方案产生):
- 配置文件格式不兼容
- 框架版本冲突
- 依赖地狱
- API 迁移
真实问题(实际存在的需求):
- 用户的痛点
- 业务需求
- 物理世界的挑战
- 人类的真实需求
讽刺的是,AI 在解决”软件问题”方面非常擅长,但这恰恰是我们应该避免的问题类型。更好的策略是:选择那些不会产生这类问题的工具和方法。
AI 作为同事 vs AI 作为替代品
Wittens 并不完全否定 AI 的价值,他区分了两种使用模式:
作为替代品(当前的主流叙事):
- “让 AI 帮你写代码”
- “自动生成整个功能”
- 追求”零代码”或”低代码”
作为工具/同事:
- 辅助查找文档
- 帮助理解复杂概念
- 提供不同视角
- 加速已知流程
关键区别在于:你是驾驶员还是乘客?
长期思考的缺失
AI 炒作的一个共同特点是极度短视:
- 只关注”我现在能多快完成这个任务”
- 忽略”一个月后谁来维护这段代码”
- 不考虑”这个选择对项目长期健康的影响”
Wittens 指出,真正的工程思维需要考虑长期影响。一个”快速”的 AI 解决方案可能在未来需要 10 倍的时间来修复。
选择你的战场
文章最后提出了一个令人深思的建议:
“不使用 AI 完全是可以的。这不会让你成为穴居人。事实上,这似乎比另一种选择压力更小,满足感更强。”
关键不是拒绝所有技术,而是有意识地选择:
- 选择简单而非复杂:使用不会产生”软件问题”的工具
- 选择理解而非复制:真正学习原理,而不是依赖 AI 生成
- 选择质量而非数量:写更少但更好的代码
- 选择真实而非伪造:培养真正的技能,而不是依赖”赝品”
我的思考
作为一个经常使用 AI 工具的开发者,这篇文章让我反思:
AI 的真正价值:
- 加速学习曲线(解释概念、提供示例)
- 减少机械性劳动(格式化、生成测试)
- 提供不同视角(代码审查、替代方案)
需要警惕的陷阱:
- 盲目信任 AI 生成的代码
- 失去深度思考的能力
- 忽略代码的长期可维护性
- 将 AI 作为逃避学习的借口
平衡之道:
- AI 是工具,不是替代品
- 理解比速度更重要
- 代码质量 > 代码数量
- 长期思维 > 短期效率
讨论点
- 你在日常开发中如何使用 AI 工具?
- 你遇到过 AI 生成的”技术债务”吗?
- 如何在效率和代码质量之间找到平衡?
- 你认为 AI 会如何影响软件行业的长期发展?
这篇文章不是为了否定 AI 的价值,而是希望引发更深入的思考。技术本身是中性的,关键在于我们如何使用它。让我们成为有意识的创作者,而不是”伪造品”的制造者。