跳到正文
The Verge · AI· Robert Hart·· 3 小时前AI 评分55

AI 能否化解 COBOL 遗留代码危机?OpenAI 数据与专家质疑

Can AI help solve the COBOL code crisis?

AI 导读

OpenAI 于 10 月 19 日称其最新模型在旧语言代码迁移上有显著改进,测试中 GPT-6.1 Sol 在高推理档位下行为保持准确率达 98%,低档为 87%,而 GPT-6 Sol 仅 21%、GPT-5.6 Sol 仅 5%。

正文 · AI 翻译

美国国税局(IRS)、银行、航空公司以及世界各地政府基础设施的共同点是什么?它们都运行在由老旧计算机代码支撑的系统之上,这些代码无人敢碰,唯恐整个系统崩溃。

OpenAI 认为自己或许找到了解决方案。10 月 19 日,该公司宣称其最新 AI 模型在把用旧编程语言编写的老化软件迁移到现代代码方面的能力取得了“实质性改进”,并声称这可以帮助各机构“维护和现代化旧系统”。

这可能是一件影响巨大的事情。COBOL 是 OpenAI 重点提到的一种语言,至今仍顽固地根植于全球关键基础设施的广大领域。尽管几十年来人们一直努力将它扫进历史,这种语言却蹒跚前行,就是不肯消亡。

“任何头脑清醒的人都不会在新开发项目中使用 COBOL。”

COBOL 的无处不在怎么强调都不为过。COBOL 是“通用商业导向语言”的缩写,诞生于 1959 年。近七十年过去了,它仍然无处不在。据 IBM 称,COBOL 是超过 40% 的网上银行系统的基础,支撑着 80% 的线下信用卡交易,并处理 95% 的 ATM 交易。它还是许多政府系统的支柱,从社会保障到 IRS,再到大多数州运行的服务。一项粗略估计显示,COBOL 的低效率每年给美国 GDP 造成的损失约为 1050 亿美元。

但替换 COBOL 极其困难。其他遗留编程语言也是如此,比如 Fortran,至今仍被用于从科学计算、天气预报到大气与海洋研究以及对核安全至关重要的代码等诸多领域。这些系统往往重要到不容出错,而许多理解这些系统的程序员早已退休或去世。

尽管 AI 编程工具在现代软件开发方面取得了令人瞩目的进展,但在处理这些遗留系统上却一直难有突破。不过近期的事态发展表明,这种情况可能正在改变。

在最新的博客文章中,OpenAI 报告了将 COBOL 代码迁移到更现代的编程语言(包括 C++、Java、Kotlin、Python 和 Rust)的可喜成果,且不改变原始软件的功能。最后这一点对于想要摆脱 COBOL 之类代码的机构至关重要,OpenAI 也承认“只有所有测试全部通过,迁移才算成功”。

在 OpenAI 自己的测试中,GPT-6.1 Sol 在低推理力度(即模型在给出答案前用于分析问题的计算步骤数)下达到 87% 的行为保真准确率,在更高推理力度下则升至 98%。相比之下,在低推理力度下,GPT-6 Astra 得分约为 86%,GPT-6 Sol 仅为 21%,GPT-5.6 Sol 更是只有 5%。

“重写代码不等于替换系统。”

“这些评估结果表明,对于正在对其业务赖以运转的软件进行现代化的团队而言,我们在实现更精准、更低成本的代码迁移方面取得了进展。”OpenAI 写道。

该公司还报告了其模型在用多种编程语言(包括 COBOL)构建数据库软件方面的能力提升。

Anthropic 也看到了遗留系统中的机会。今年 2 月,它发布了一份分步骤的“代码现代化操作手册”,并将其编程智能体 Claude Code 宣传为一种将 COBOL 代码迁移到 Java 或 Python 等现代语言的途径。它没有提供任何性能基准来展示 Claude Code 在这类迁移中的表现,但宣称“COBOL 现代化的经济性已经改变”。IBM 部分收入来自帮助企业维护遗留系统,其股价在 Anthropic 宣布后暴跌。

接受 The Verge 采访的专家一致认为,近年来 AI 工具在处理遗留代码方面取得了长足进步。但他们警告说,OpenAI 本周宣传的进展距离安全替换围绕其构建的关键遗留系统还差得很远。

OpenAI 发言人 Oscar Haines 在给 The Verge 的电子邮件中承认,遗留代码“仍远未成为一个已解决的问题”,并表示公司正在听取开发者和企业的反馈,探索构建更好测试的方法,并继续提升其模型对编程语言的理解。截至发稿,Anthropic 未提供评论。

“OpenAI 展示的评估并没有解决关键难题:将复杂的遗留系统拆分成可以单独替换的较小单元。”

“重写代码不等于替换一个系统,”荷兰特文特大学软件演化副教授 Vadim Zaytsev 说。系统确实包含大量代码——Zaytsev 说他见过的最大系统有 2.5 亿行 COBOL 代码,“肯定不是世界上最大的”——但这只是问题的一部分。他说,代码可能由多种语言编写,而且还要考虑可能以各种格式存储的数据。此外,还需要牢记与其他系统的技术集成,以及人员和组织的期望。

所有这些复杂性意味着“AI 目前在替换或迁移遗留 COBOL 系统方面并未发挥主要作用,”Zaytsev 说。

荷兰代尔夫特理工大学的软件工程教授 Arie van Deursen 告诉 The Verge,OpenAI 的评估也没有反映这一复杂的现实。他称该公司的博客“肤浅”,指出其中几乎没有提供关于迁移任务的细节,而其语言基准测试让模型完成的是一个相对简单且定义明确的任务,所涉及的系统与它们在训练中可能见过的系统类似。他还强调了维护老旧系统与现代化改造之间的巨大差距。“维护当然比现代化改造容易得多,”van Deursen 说,并称 OpenAI 用来评估其模型的任务与实际的现代化改造相距“光年”。“OpenAI 展示的评估并没有解决关键难题:将复杂的遗留系统拆分成可以单独替换的较小单元。”

最大的挑战未必是重写代码。“主要挑战确实不在于理解系统如何运作,”伦敦帝国理工学院程序设计语言教授 Alastair Donaldson 说。他表示,对于使用 COBOL 等语言的遗留系统而言,这种理解缺失是一个“非常普遍”的问题,并补充说如今几乎没有人还会用这些语言编程了。尽管 COBOL 无处不在,Donaldson 说“任何心智正常的人都不会在新开发项目中使用 COBOL。”

“在许多情况下,迁移前后系统行为哪怕有细微差异都是不可接受的。”

Donaldson 说,这使得可靠的测试至关重要。一种方法是在旧系统和新系统上运行相同的工作流程,检查它们的行为是否完全一致。AI 也可以为其代码翻译编写文档,最好能让熟悉该遗留语言的人来审查这些工作。丹麦南方大学数学与计算机科学教授 Jacopo Mauro 表示,形式化验证——利用数学技术在计算上验证代码行为是否正确——是另一种选择。

Mauro 说,这类方法已被用于验证 AI 生成的数学结果,但将其应用于遗留代码需要“大量的工作”。他表示,使用这些方法意味着代码可以被自动检查,并补充说“拥有这种能力将胜过由人来检查翻译是否正确。”他称在那之前,“人工验证仍然不可或缺。”

而当所涉及的系统与运行 COBOL 的系统一样关键时,专家表示,你必须绝对确信替代方案可行。“在许多情况下,迁移前后系统行为哪怕有细微差异都是不可接受的,”Zaytsev 说。虽然 AI 确实能带来节省并加快进度,但遗留系统的复杂性意味着部分自动化并不足够。

“假设你有一根能处理你 99% 代码的魔法 AI 棒,”Zaytsev 说。“那剩下的 1% 你怎么办?那 1% 可能是一百万行代码,散落各处,并以你一生中所能想象的更多方式悄无声息地出故障。”

关注此报道的主题和作者,在你的个性化首页信息流中查看更多类似内容,并接收电子邮件更新。

  • Robert Hart

来源: The Verge · AI · theverge.com