用对话的方式编程?1978 年的天才程序员对这种“危险错觉”发出的警告

一名程序员在写满复杂符号的黑板前陷入沉思。
AI Summary

计算机科学大师埃兹格·迪杰斯特拉早在 1978 年就强烈批评自然语言编程,认为它可能会摧毁精确的逻辑体系并导致智力上的懒惰。

想象一下。你对 AI 说:“帮我整理一下这些数据。”以前需要一行行敲写的复杂代码,现在只需像和人对话一样下达指令就能完成。我们认为这像是技术的奇迹般进步。然而,四十多年前,该领域的一位传奇计算机科学家就已经预见到这一现象并发出警告。他将其称为“新文盲 (The New Illiteracy)”。

为什么这很重要?

当今时代,我们生活在“AI 代劳一切编码”的时代。只需用“自然语言 (Natural Language,人类日常使用的语言)”下达指令,就能立刻得到成果,确实非常方便。然而,随着我们越来越习惯 AI 的便利,我们正逐渐忘记计算机为何以那种方式运作,以及何为逻辑的严密性。埃兹格·W·迪杰斯特拉 (Edsger W. Dijkstra) 于 1978 年撰写的文章 On the foolishness of “natural language programming” 在今天依然具有警示意义。[参考 5, 参考 6, 参考 11, 参考 14]

通俗理解:自然语言为何不适合编程?

迪杰斯特拉认为自然语言不是精确思维的“盟友”,反而是其“敌人”。[参考 6]

打个比方,日常对话就像一张“加了厚重滤镜的照片”。即便我们对朋友说“把那个拿来”,对方也能通过语境精准理解。但计算机就像是一个“没有任何滤镜的超高分辨率镜头”。只要指令稍微模糊一点,它就很容易拿错数据。

迪杰斯特拉以动词“是 (to be)”为例指出了这一点。[参考 14] 英语中的“is”或韩语中的“~이다”都有多种含义。在“Tom is a student”中,它是“属于一部分”的意思;而在“Tom is the culprit”中,它是“等于”的意思。人类可以通过语境区分,但计算机可能会混淆这两个逻辑上完全不同的指令。因此,他的核心观点是,计算机编程必须使用剥离了这种模糊性的、像 0 和 1 那样明确的“形式符号 (Formal Symbolism)”。[参考 1, 参考 2, 参考 14]

现状:便利与精确之间的平衡木

当然,当今的人工智能模型在规模和复杂程度上都与过去的自然语言编程不可同日而语。[参考 9] 但迪杰斯特拉的担忧仍然切中要害。他批评自然语言编程趋势最终会助长用户的“智力懒惰”,侵蚀编程所必需的训练和精确性,称其为一种“愚蠢的行为 (foolishness)”。[参考 12]

我们现在生活在“氛围编程 (Vibe Coding,凭感觉编程)”的时代,但如果我们失去了判断 AI 生成的代码为何出错的能力,那可能真的会成为“新文盲”的时代。[参考 6, 参考 7]

未来会怎样?

技术将持续进步,但我们必须记住一点:AI 理解自然语言,并不代表编程已经变成了一项“可以不再那么精确的工作”。即使有一天 AI 能完美理解我们所有的指令,计算机依然只能在人类输入的逻辑框架内运行。无论使用自然语言还是形式符号,编程的本质是“实现精确严密的逻辑”,迪杰斯特拉的这一教诲在未来也不会改变。


MindTickleBytes 的 AI 记者视角

迪杰斯特拉犀利的批评仿佛是从 1978 年寄来的警告信。我们在享受 AI 代劳编程带来的便利时,不禁反思是否正在丢失逻辑严密性这一基本功。工具越是强大,使用者越是需要扎实的基本功,这一真理不应被遗忘。


参考资料

  1. On the foolishness of “natural language programming”
  2. On the foolishness of “natural language programming”
  3. On the foolishness of “natural language programming”
  4. Dijkstra Called It in 1978: Natural Language Programming Is Still …
  5. PDF On the foolishness of “natural language programming”
  6. On Natural Language Programming – @dsyme on software
  7. On the foolishness of “natural language programming”
  8. Of course. EWD 1008, titled “On the foolishness of ‘natural language…..
  9. Dijkstra on foolishness of Natural Language Programming
  10. Ten months ago, I published an article by Edsger W. Dijkstra from 1978…
AD
测试你的理解
Q1. 埃兹格·迪杰斯特拉批评自然语言编程的最大原因是什么?
  • 自然语言的歧义性
  • 计算机性能不足
  • 用户教育困难
迪杰斯特拉认为自然语言本质上是模糊的,不适合生命在于精确的计算机编程。
Q2. 迪杰斯特拉指出的代表“自然语言歧义”的词汇是什么?
  • 和
  • 是 (to be)
  • 如果
“是”既可以表示“属于……的一部分”,也可以表示“等同于……”,这会给计算机带来逻辑上的困惑。
Q3. 迪杰斯特拉将依赖自然语言编程的现象称为什么?
  • 新文盲
  • 智力懒惰
  • 逻辑跳跃
他将其称为“新文盲 (The New Illiteracy)”并提出了强烈警告。