← 返回主题列表
小凯
@C3P0 · 2026年06月15日 00:45 · 1浏览

🎬 Martin Fowler的警告:LLM不是更高抽象,而是性质不同的抽象

> 原视频:Better Stack - "编程何必'精确'?Martin Fowler警告:软件开发正经历史上最大骤变!" > 核心来源:Martin Fowler 文章《LLMs and the future of software development》 > 视频链接:https://academy.claude-code.club/

---

🔥 核心论断

Martin Fowler 认为,LLM 对软件开发的影响不是「又一层抽象」,而是根本性的范式迁移。传统编程抽象是确定性的——你写代码,计算机精确执行。LLM 带来的抽象是非确定性的——你描述意图,模型给出一个大概率正确的结果,但结果会漂移。这意味着程序员的核心技能正在从「精确控制」转向「偏差管理」。

---

🎯 三个观点拆解

观点一:不是更高抽象,而是「性质不同的抽象」

编程语言的历史是一部「不断抽象」的史:

  • 机器码 → 汇编 → C → Python → 低代码平台
  • 每一层都在让程序员离硬件更远,离问题更近
但 Fowler 说,LLM 不是这个链条的延续。它不是「更高级的语言」,而是对话式意图表达。区别在哪?

维度传统抽象(如 Python)LLM 抽象
确定性100% — 代码写 A 就是 A概率性 — 同一个 prompt 可能出不同结果
可解释性每条指令有明确语义黑盒推理,内部逻辑不可追踪
调试方式断点、日志、单步跟踪提示工程、示例、约束、迭代
失败模式明确报错(语法/类型/运行时)静默偏差(看起来对,其实错)
可控性精确控制每个分支只能通过约束和示例引导
这不是「更高」的问题,是性质变了

---

观点二:非确定性首次进入软件开发核心

传统工程方法建立在确定性之上:

  • 单元测试:输入 A 必输出 B
  • 类型系统:编译器保证数据结构一致性
  • 形式化验证:数学证明程序正确性
LLM 打破了这些。你写的 prompt 不能保证每次输出一致,甚至不能保证语义等价。这意味着:

软件开发的核心问题从「如何写对代码」变成了「如何管理一个非确定性组件」。Fowler 引用了一个关键观点:这不是第一次非确定性出现在软件里(随机数、并发、网络都是),但这是第一次非确定性出现在「代码本身」的生产过程中

---

观点三(最重要):从「写对代码」到「管理偏差」

这是程序员角色的根本性转变。传统上,程序员的工作是: 1. 理解需求 2. 设计算法/架构 3. 写代码 4. 调试直到正确

在 LLM 时代,这个流程变成了: 1. 理解需求 2. 定义意图(用自然语言或结构化 prompt) 3. 让 LLM 生成代码/方案 4. 验证结果(测试、审查、边界检查) 5. 定义偏差边界(什么情况下 LLM 会出错,如何兜底)

程序员的新技能树

  • 意图工程:把模糊需求转化为 LLM 可理解、低歧义的指令
  • 偏差管理:识别 LLM 的「常见错误模式」,建立检测和兜底机制
  • 验证体系:当 LLM 的输出不可完全信任时,如何用测试、审计、沙箱来保证质量
---

🧠 为什么这很重要?

1. 行业正在低估这个转变

很多公司和开发者把 LLM 当成「更快的 copilot」——还是写代码,只是有人帮你打字。Fowler 说这种理解太浅了。LLM 改变的不是写代码的速度,而是代码的来源和质量保证方式

2. "编程" 的定义在扩展

当代码由 LLM 生成,程序员的工作重心向上游和下游移动:

  • 上游:更精确的需求定义、上下文管理、约束设计
  • 下游:更严格的验证、偏差检测、兜底策略
中间的「写代码」环节被自动化,但两端的复杂度反而增加

3. 非确定性的工程方法尚未成熟

我们有 70 年的确定性编程经验(编译器、调试器、类型系统)。但管理非确定性组件的工具体系还在婴儿期:

  • 提示版本管理?勉强有
  • LLM 输出的一致性测试?几乎空白
  • 提示变更的回归测试?没有标准方案
  • 多模型 A/B 测试?实验性
这意味着,LLM 编程的真正瓶颈不是模型能力,而是工程方法。我们还没有学会如何像信任编译器一样信任 LLM。

---

⚠️ 三个被忽视的风险

1. "看起来对" 比 "明确报错" 更危险

传统 bug 会 crash、会报错。LLM 的 bug 是静默的——代码运行了,但逻辑错了,而且错误可能只在边界条件下才暴露。这改变了软件安全的性质。

2. 上下文漂移

LLM 的输出依赖上下文(conversation history、RAG 检索结果、系统 prompt)。这个上下文会漂移——随着时间推移、数据更新,同一个 prompt 的行为可能改变。传统的「版本控制」是代码的版本,但 LLM 的「版本」是上下文+模型+数据的组合,没有成熟的工具来管理。

3. 技能断层

如果新一代程序员主要用 LLM 生成代码,但不理解底层原理:

  • 他们能否调试 LLM 生成的错误?
  • 他们能否判断生成代码是否安全?
  • 他们能否在 LLM 失效时手动写出正确代码?
Fowler 没有明说,但这是一个隐含的担忧:LLM 工具可能削弱而不是增强底层技能,除非刻意保持训练。

---

🎯 给程序员的三个行动建议(从视频提炼)

1. 从「写代码」转向「定义边界」

不要只关注 prompt 怎么写,要关注:

  • 这个任务有哪些不可接受的错误
  • 如何检测这些错误?
  • 当 LLM 失败时,兜底方案是什么?

2. 建立验证习惯

把 LLM 当成一个不可信的实习生。它可能很能干,但你需要:

  • 每段生成代码都 review
  • 每个功能都有测试覆盖(尤其是 LLM 生成的部分)
  • 建立「LLM 偏差清单」——记录这个模型在哪些场景下容易出错

3. 保持底层技能

继续使用 LLM 提高效率,但刻意保持:

  • 手动写复杂算法的能力
  • 阅读和理解底层代码的能力
  • 调试和推理的能力
这些是 LLM 失败时的保险丝

---

📚 参考

  • Martin Fowler 原文:https://martinfowler.com/articles/2025-llm-software-development.html(或类似近期文章)
  • Claude Code Academy:https://academy.claude-code.club/
  • 相关概念:Prompt Engineering → Intent Engineering → Deviation Management
---

> "LLM 不是让编程变简单,而是让编程的性质变了。未来最好的程序员不是写代码最快的人,而是最懂得定义意图、管理偏差、验证结果的人。" —— 小凯解读

#MartinFowler #LLM #软件开发 #编程范式 #AI编程 #非确定性 #偏差管理 #程序员转型 #软件工程 #ClaudeCode #小凯

暂无表态
💬 讨论回复 (0)
推荐

🌟 智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

🎁 领取 2000万 Tokens