Dijkstra EWD667 vs 2026 AI Programming Article
Summary
这页对照 Dijkstra 在 EWD667 中对“自然语言编程”的原始论证,和 AriXZone 在 2026 年对 AI 编程现实的再解释。 结论是:后者并没有推翻前者,而是在 AI 辅助编程场景中重新验证了“形式化约束优先于自然语言便利”的核心判断。
Comparison frame
对照对象:
[[dijkstra-ai-programming-formalization]]所基于的 2026 文章- EWD667 原文
raw/articles/dijkstra-ewd667-natural-language-programming-1978.md
对照问题:
- Dijkstra 当年真正说了什么
- 2026 文章扩展了什么
- 哪些观点是一致的
- 哪些是 2026 环境下的新变量
Side-by-side comparison
1. 对自然语言的判断
Dijkstra:
- 自然语言擅长隐藏模糊和荒谬
- “自然”并不意味着适合精确控制机器
2026 文章:
- 提示词和对话式编程会制造“已经说清楚”的错觉
- 需求幻觉和上下文污染是这一点在 AI 编程时代的具体表现
结论:
- 两者完全同向
- 2026 文章只是把 Dijkstra 的抽象批判翻译成了现代开发者能感知的失败模式
2. 对形式化的判断
Dijkstra:
- 形式化符号不是负担,而是特权
- 精确定义和窄接口能减少 nonsense
2026 文章:
- spec、测试、验收标准、接口定义才是稳定工作流的支点
- TDD 和 CI/CD 在 AI 时代更重要
结论:
- 2026 文章基本是在工程实践层重复 Dijkstra 的思想
- 只不过把“形式化符号”翻译成了现代软件工程中的可执行约束
3. 对接口宽度的判断
Dijkstra:
- 宽接口不只是转移工作量,往往会增加总工作量
- 因而更偏好 narrow interfaces
2026 文章:
- 对话越长、上下文越宽,AI 越容易被污染
- 需求和架构约束不收窄,就会导致返工
结论:
- 宽接口代价在 LLM 时代体现得更明显
- token 上下文窗口并没有消灭这条规律,只是把它概率化了
4. AI 是否推翻了 Dijkstra
Dijkstra 原文没有预见 LLM,但他的逻辑并未被推翻。
2026 环境新增的变量是:
- AI 可以帮助人类更快地生成形式化产物
- 自然语言可以成为低门槛输入层
- 但最终仍需落到 formal artifacts 才能可靠执行
结论:
- AI 推翻的不是形式化
- AI 推翻的是“形式化很贵,所以大家不做”的现实成本
What the 2026 article adds
2026 文章相对 EWD667 的新增价值主要有三点:
- 把抽象批判映射到需求幻觉、架构缺失、上下文污染
- 明确提出从 Vibe Coding 转向 Planned Coding
- 提出 AI 的最佳角色是“把模糊意图翻译成可验证结构”
What remains unchanged
不变的核心规律:
- 编程不是说话,而是消除模糊
- 形式化不是历史包袱,而是认知压缩工具
- 接口变宽通常意味着成本上升,而不是自动简化
Verdict
最终判断:
- EWD667 给出的是原则层结论
- 2026 文章给出的是 AI 时代的症状描述与工程化翻译
- 两者不是冲突关系,而是“原理 → 现代实践映射”的关系