美国国税局、银行、航空公司以及世界各地的政府基础设施有什么共同点?它们都运行在由古董级计算机代码支撑的系统上,没人敢碰这些代码,唯恐一切崩溃。
OpenAI 认为它可能找到了解决方案。10 月 19 日,该公司宣称其最新 AI 模型在将用较旧编程语言编写的老化软件迁移为现代代码的能力上取得了“实质性改进”,并声称这可以帮助组织“维护和现代化旧系统”。
这可能是一件意义重大的事。COBOL 是 OpenAI 重点提及的语言之一,它仍然顽固地深嵌在世界关键基础设施的很大一部分之中。尽管数十年来人们一直努力将其送入历史,这门语言却一直苟延残喘,就是不肯消亡。
“任何头脑正常的人都不会用 COBOL 来做新的开发项目。”
很难夸大 COBOL 的普及程度。COBOL 是“common business-oriented language”(通用面向商业语言)的缩写,诞生于 1959 年。近七十年后,它依然无处不在。根据 IBM的说法,COBOL 是超过 40% 的网上银行系统的基础,支撑着 80% 的面对面信用卡交易,并处理着 95% 的 ATM 交易。它还是许多政府系统的底层支撑,从社会保障到国税局再到由大多数州运营的服务。一项粗略估计认为,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 说。
OpenAI 的评估也没有反映这一复杂的现实,荷兰代尔夫特理工大学软件工程教授 Arie van Deursen 对The Verge表示。他称该公司的博客“流于表面”,指出其中关于迁移任务提供的细节很少,而其语言基准测试用相对简单且定义明确的任务来测试模型,这些任务涉及的 systems 与模型在训练中可能遇到的系统相似。他还强调了维护老旧系统与对其进行现代化改造之间的巨大差距。“维护当然比现代化改造容易得多,”van Deursen 说,并称 OpenAI 用来评估其模型的任务距离真正的现代化改造有“光年之遥”。“OpenAI 展示的评估并未触及关键难点:把一个复杂的遗留系统拆解成可以逐个替换的更小单元。”
最大的挑战未必是重写代码。“主要挑战确实是不理解系统如何运作,”伦敦帝国理工学院编程语言教授 Alastair Donaldson 说。他表示,对于使用 COBOL 等语言的遗留系统来说,这种理解缺失是一个“非常常见”的问题,并补充说如今很少有人还知道如何用这些语言编程。而且尽管它无处不在,Donaldson 说“没有哪个头脑正常的人会用 COBOL 来做新的开发项目。”
“在许多情况下,迁移前后系统行为即使只有细微差异也是不可接受的。”
Donaldson 说,这使得稳健的测试至关重要。一种方法可以是将相同的工作流分别在旧系统和新系统上运行,以检查它们的行为是否完全一致。AI 还可以为其代码翻译编写文档,理想情况下让熟悉遗留语言的人能够审查这项工作。南丹麦大学数学与计算机科学教授 Jacopo Mauro 说,形式化验证是另一种选择,它使用数学技术以计算方式验证代码行为是否正确。
这类方法已被用于验证 AI 生成的数学结果,但 Mauro 说,将它们应用于遗留代码需要“巨大的工作量”。Mauro 说,使用这些方法意味着代码可以被自动检查,并补充说“拥有这一能力将比人工检查翻译是否正确更好。”他说,在那之前,“人工验证仍然必不可少。”
而当涉及的系统像运行 COBOL 的系统那样关键时,专家表示你需要绝对确定替代系统能正常工作。“在许多情况下,迁移前后系统行为即使只有细微差异也是不可接受的,”Zaytsev 说。虽然 AI 确实可以带来节省并加快进度,但遗留系统的复杂性意味着部分自动化还不够。
“假设你有一根魔法 AI 魔杖,能处理你 99% 的代码,”Zaytsev 说。“那剩下的 1% 你怎么办?那 1% 可能是上百万行代码,散布在各处,以你一生中都想象不到的更多方式微妙地失败。”
关注主题和作者来自这篇报道,以便在个性化首页信息流中看到更多类似内容,并接收邮件更新。
- Robert Hart