← 最新论文
💻 computer science

AI for software engineering: from probable to provable

该论文针对“氛围编程”面临的需求定义困难和幻觉问题,提出将人工智能的创造力与形式化规范及程序验证技术相结合,以实现从“概率性”到“可证明”的软件工程转变。

原作者: Bertrand Meyer

发布于 2026-04-24
📖 1 分钟阅读☕ 轻松阅读

原作者: Bertrand Meyer

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇文章由软件工程领域的泰斗 Bertrand Meyer 撰写,标题是《从“可能”到“可证明”:人工智能在软件工程中的角色》。

简单来说,这篇文章在讨论一个很火的话题:AI 会取代程序员吗? 作者的答案是:不会直接取代,但如果想让它真正帮上大忙,必须给它套上“紧箍咒”——也就是数学逻辑和形式化验证。

为了让你轻松理解,我们可以把这篇文章的核心观点拆解成几个生动的比喻:

1. 历史的“既视感”:AI 不是第一个来“抢饭碗”的

文章开头提到,从 60 年代的 COBOL 语言到现在的“低代码/无代码”,每隔几年就会有人喊:“以后不需要程序员了,AI/工具会自动写代码!”

  • 比喻:这就像每次有人发明了一种更高级的“自动炒菜机”,大家就喊“以后不需要厨师了”。结果呢?炒菜机确实能帮人切菜、调味,让做饭变快了,但没人能完全替代厨师。因为做饭不仅仅是把菜扔进锅里,还需要知道客人想吃什么(需求)、怎么搭配营养(设计)、以及确保菜没毒(测试)。
  • 现状:现在的"AI 编程”(作者戏称为“氛围编程”Vibe coding)确实很酷,能帮你快速生成代码,但它还没能取代整个软件工程。

2. 最大的两个拦路虎:提需求太难,AI 爱“胡扯”

作者指出,想用 AI 写代码,面临两个巨大困难:

  • 困难一:提需求比写代码还难。
    • 比喻:很多人以为只要对 AI 说“我要一个像微信一样的软件”,AI 就能变出来。这就像你对厨师说“我要一顿好吃的”,厨师却问你“具体是什么口味?辣的还是甜的?几个人吃?”。把模糊的想法变成精确的指令(提示词工程),本身就是最难的工作之一,甚至比写代码本身还难。
  • 困难二:AI 的“幻觉”(Hallucination)。
    • 比喻:现在的 AI 就像一个博学但有点自负、爱吹牛的大学生。它读过很多书,说话很流利,态度也很诚恳,但它并不懂逻辑。它给出的答案通常是“看起来最像对的”,而不是“绝对对的”。
    • 后果:在翻译或看图时,AI 偶尔错一点没关系(比如把“猫”翻译成“狗”,人类能看出来)。但在写代码时,如果 AI 编造了一个不存在的函数,或者逻辑有细微漏洞,整个程序就会崩溃,甚至引发安全灾难。

3. 软件的特殊性:要么完美,要么垃圾

这是文章最核心的观点。

  • 比喻
    • 医疗 AI:如果 AI 看 X 光片,100 次里有 99 次看对了,1 次看错了,它依然是个伟大的工具,因为它比人眼快,且错误率更低。
    • 软件代码:软件是非黑即白的。一个程序要么能跑(有用),要么就是垃圾(没用)。你不可能说“这个软件 99% 是对的,剩下 1% 是错的,大家凑合用吧”。如果核心功能有个小 bug,整个系统就废了。
  • 数学陷阱:软件是由成千上万个模块组成的。如果每个模块有 99.9% 的概率是对的,那么 1000 个模块连在一起,整个系统完全正确的概率就只剩下 37% 了。如果 AI 只是“大概率”正确,那么拼起来的系统几乎注定是错的

4. 解决方案:给 AI 配一个“数学警察”

作者认为,AI 和软件工程要想“幸福地生活在一起”,不能只靠 AI 的“创造力”,必须引入形式化验证(Formal Verification)

  • 比喻
    • AI 是那个充满创意、天马行空的“嬉皮士”画家,它画出的草图很美,但可能透视不对,或者颜色搭配不符合物理定律。
    • 形式化验证 是那个严肃、一丝不苟的“数学警察”。它不关心画得美不美,只关心逻辑是否严密
    • 合作模式:AI 负责画草图(生成代码和初步需求),数学警察负责拿着尺子和圆规去检查(形式化验证)。只有当警察说“这完全符合几何公理”时,这幅画(软件)才能挂出来。
  • 具体做法
    1. 用数学语言精确描述你想要什么(形式化规范)。
    2. 让 AI 生成代码。
    3. 用计算机工具(证明器)去数学证明这段代码是否严格符合你的描述。
    4. 如果证明通过,那就是100% 确定的;如果没通过,就修改,直到通过。

5. 未来的工作流:从“氛围编程”到“契约编程”

作者提出了一个未来的工作场景:

  • 过去:我们靠“氛围编程”(Vibe coding),凭感觉让 AI 写代码,然后人工去试错、修 bug。
  • 未来:我们要搞“契约编程”(Vibe-contracting)。
    • 人类和 AI 一起写“契约”(精确的数学规则)。
    • AI 生成代码。
    • 工具自动证明代码符合契约。
    • 如果不符合,AI 自动修正,直到证明通过。

总结

这篇文章的核心思想是:不要指望 AI 能像变魔术一样直接变出完美的软件。

AI 确实很强大,但它本质上是基于概率的(猜得准不准),而软件工程要求的是确定性(必须是对的)。
唯一的出路,是把 AI 的“创造力”和数学逻辑的“严谨性”结合起来。让 AI 当“创意助手”,让数学工具当“质量守门员”。只有这样,我们才能从“大概能跑”的概率世界,走向“绝对正确”的可证明世界

一句话总结:AI 可以帮你写代码,但只有加上数学证明的“紧箍咒”,它写出来的东西才敢真正用在关键的地方。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →