AI 能解决 COBOL 遗留代码危机吗
Can AI help solve the COBOL code crisis?
The Verge 梳理了 OpenAI 与 Anthropic 在 COBOL 等遗留代码迁移上的进展,并引述多位学者指出这些能力离安全替换关键系统还很远。OpenAI 称 GPT-6.1 Sol 在低推理强度下行为保持准确率为 87%,提高推理强度后达到 98%,而 GPT-5.6 Sol 仅为 5%。荷兰特文特大学副教授 Vadim Zaytsev 表示,重写代码不等于替换系统,AI 目前在迁移遗留 COBOL 系统中并未扮演主要角色。
推荐理由
AI 评分 64
文章把 OpenAI 的迁移基准与多位学者对遗留系统复杂度的判断并置,读者可据此看清代码重写与系统替换之间的距离。
主题
正文 · AI 翻译
美国国税局、银行、航空公司以及世界各地政府基础设施有什么共同点?它们运行的系统都靠无人敢碰的老旧计算机代码支撑,唯恐一碰就全盘崩溃。
OpenAI认为它或许有解决办法。10月19日,该公司宣称其最新AI模型在将用较老编程语言编写的陈旧软件迁移为现代代码方面取得了“实质性改进”,并称这可以帮助各组织“维护和现代化老旧系统”。
这可能是一件意义重大的事。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现代化的经济账已经改变”。Anthropic发布声明后,IBM股价暴跌,该公司部分收入来自帮助企业维护遗留系统。
接受The Verge采访的专家一致认为,近年来AI工具在处理遗留代码方面取得了进展。但他们警告说,OpenAI本周大肆宣传的进步,距离能够安全替换围绕遗留代码构建的关键系统还非常遥远。
OpenAI发言人Oscar Haines在给The Verge的电子邮件中承认,遗留代码“仍远未成为一个已解决的问题”,并表示公司正在听取开发者和企业的反馈,探索构建更好的测试方法,并继续提升其模型对编程语言的理解。Anthropic未能在发稿前提供置评。
“重写代码不等于替换系统,”荷兰特文特大学软件演化副教授Vadim Zaytsev说。系统确实包含大量代码——Zaytsev说他见过的最大系统有2.5亿行COBOL代码,“绝对算不上世界最大”——但这只是问题的一部分。他说,代码可能用多种语言编写,还有可能以各种格式存储的数据需要考虑。此外还要考虑与其他系统的技术集成,以及人和组织的期望。
这种复杂性意味着“AI目前在替换或迁移遗留COBOL系统方面并未发挥主要作用,”扎伊采夫说。
荷兰代尔夫特理工大学软件工程教授阿里·范德森(Arie van Deursen)对The Verge表示,OpenAI的评估也没有反映这种复杂的现实。他称该公司的博客“流于表面”,指出其中几乎没有提供关于迁移任务的细节,而其语言基准测试所用的任务相对简单且定义明确,涉及的 systems 与模型在训练中可能遇到的系统类似。他还强调了维护老旧系统与对其进行现代化改造之间的巨大差距。“维护当然比现代化改造容易得多,”范德森说,并称OpenAI用来评估其模型的任务与实际的现代化改造相距“光年之遥”。“OpenAI展示的评估并未触及关键难点:将一个复杂的遗留系统拆解为可以单独替换的更小单元。”
最大的挑战未必是重写代码。“主要挑战确实不在于理解系统如何运作,”伦敦帝国理工学院编程语言教授阿拉斯泰尔·唐纳森(Alastair Donaldson)说。他表示,对于使用COBOL等语言的遗留系统来说,这种理解缺失是一个“非常常见”的问题,并补充说如今很少有人还懂得如何用这些语言编程。而且尽管它无处不在,唐纳森说“任何头脑正常的人都不会在新开发项目中使用COBOL。”
唐纳森说,这使得稳健的测试至关重要。一种方法可能是让旧系统和新系统运行相同的工作流程,以检查它们的行为是否完全一致。AI还可以记录其代码翻译过程,理想情况下让熟悉遗留语言的人能够审查这项工作。丹麦南丹麦大学数学与计算机科学教授雅各波·毛罗(Jacopo Mauro)说,形式化验证是另一种选择,它使用数学技术通过计算来验证代码行为是否正确。
毛罗说,这类方法已被用于验证AI生成的数学结果,但将其应用于遗留代码需要“巨大的工作量”。毛罗说,使用这些方法意味着代码可以被自动检查,并补充说“拥有这种能力将比人工检查翻译是否正确更好。”他说,在那之前,“人工验证仍然至关重要。”
而当涉及的系统像运行COBOL的系统那样关键时,专家表示你需要绝对确定替换系统能够正常工作。“在许多情况下,迁移前后系统行为的哪怕微小差异都是不可接受的,”扎伊采夫说。虽然AI确实可以节省成本并加快速度,但遗留系统的复杂性意味着部分自动化还不够。
“假设你有一根神奇的AI魔杖,能处理你99%的代码,”扎伊采夫说。“剩下的1%你怎么办?那1%可能是一百万行代码,散布在各处,并以你一生中都想象不到的更多方式微妙地失败。”