AI能否化解COBOL代码危机?
美国国税局、银行、航空公司以及世界各地的政府基础设施有什么共同点?它们的系统都建立在一堆没人敢动的老古董代码上,生怕一碰就全盘崩溃。
OpenAI 觉得自己可能找到了解法。10 月 19 日,该公司宣称,其最新 AI 模型在把老旧编程语言编写的软件迁移为现代代码方面取得了“显著进步”,并表示这能帮助各机构“维护和升级旧系统”。
这可能是件大事。COBOL 是 OpenAI 点名提到的语言之一,至今仍深深扎根于全球大量关键基础设施中。几十年来人们一直想让它退出历史舞台,它却始终苟延残喘,就是不肯消亡。
“但凡脑子正常的人,都不会在新项目里用 COBOL。”
COBOL 的无处不在怎么强调都不为过。它全称"common business-oriented language"(通用商业语言),诞生于 1959 年。将近七十年过去了,它依然无处不在。据 IBM 统计,超过 40% 的网上银行系统以 COBOL 为基础,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 表示:“这些评估结果表明,在帮助团队将业务依赖的旧软件进行现代化迁移时,AI 正朝着更准确、更经济的方向迈进。” 该公司还报告,其模型在多种编程语言(包括 COBOL)中构建数据库软件的能力也取得了提升。 Anthropic 同样看重新系统的机会。今年 2 月,它[发布](https://resources.anthropic.com/code-modernization-playbook)了一份分步骤的“代码现代化操作手册”,并[推介](https://claude.com/resources/articles/how-ai-helps-break-cost-barrier-cobol-modernization)其编程智能体 Claude Code 作为将 COBOL 代码[迁移](https://claude.com/resources/articles/how-to-prepare-for-ai-driven-code-modernization-projects)到 Java 或 Python 等现代语言的手段。它并未提供性能基准数据来展示 Claude Code 执行此类迁移的效果,但[宣称](https://claude.com/resources/articles/how-ai-helps-break-cost-barrier-cobol-modernization)“COBOL 现代化的经济账已经变了”。IBM 股价[大跌](https://www.reuters.com/business/ibm-posts-steepest-daily-drop-since-2000-after-anthropic-says-ai-can-modernize-2026-02-24/),就在 Anthropic 宣布此项能力之后;IBM 的部分收入正来自帮助企业维护旧系统。 接受《The Verge》采访的专家们一致认为,近年来 AI 工具在处理旧代码方面确有进展。但他们提醒,OpenAI 本周大肆宣传的技术进步,距离能够安全替换关键旧系统还差得很远。OpenAI 发言人 Oscar Haines 在给 The Verge 的邮件中承认,遗留代码“仍是一个远未解决的问题”,并表示公司正在听取开发者和企业的反馈,探索构建更好的测试方法,并持续提升模型对编程语言的理解。Anthropic 在截稿前未予置评。
“OpenAI 展示的评估并没有触及关键难点:如何把一个复杂的遗留系统拆分成可以逐个替换的小单元。”
“重写代码不等于替换整个系统,”荷兰特文特大学软件演化方向的副教授 Vadim Zaytsev 说。系统的代码量确实很大——他见过最大的一个有 2.5 亿行 COBOL,“绝对算不上世界之最”——但这只是问题的一部分。他指出,代码可能由多种语言写成,还要考虑数据以及各种存储格式。此外,还有与其他系统的技术集成,以及相关人员和组织的期望需要兼顾。
Zaytsev 表示,这么复杂的现实意味着“目前 AI 在替换或迁移遗留 COBOL 系统方面还起不了主要作用”。
荷兰代尔夫特理工大学的软件工程教授 Arie van Deursen 告诉 The Verge,OpenAI 的评估同样没能反映这一复杂的现实。他称这家公司的博客“很肤浅”,指出其中几乎没有关于迁移任务的细节,而其语言基准测试的任务相对简单、定义明确,所用系统也与模型训练时见过的类似。他还强调了维护老旧系统与现代化改造之间的巨大差距。“维护当然比现代化改造容易得多,”van Deursen 说,并称 OpenAI 用来评估模型的任务与实际的现代化改造相距“十万八千里”。“OpenAI 展示的评估并没有触及关键难点:如何把一个复杂的遗留系统拆分成可以逐个替换的小单元。”
最大的挑战未必是重写代码本身。“主要难题确实在于不理解系统是如何运作的,”帝国理工学院编程语言教授 Alastair Donaldson 说。他指出,对于使用 COBOL 这类语言的遗留系统而言,这种理解缺失是“非常普遍”的问题,如今懂得如何在这些语言中编程的人已寥寥无几。尽管 COBOL 随处可见,Donaldson 坦言:“没人会在理智状态下选择用 COBOL 来启动新的开发项目。”
“在许多情况下,迁移前后系统行为哪怕出现细微差异也是不可接受的。”
Donaldson 表示,这使得稳健的测试变得至关重要。一种可行方法是让相同的工作流分别在旧系统和新系统中运行,以确认二者行为一致。此外,AI 也可以记录其代码转换过程,理想情况下,熟悉遗留语言的人类专家可以对此进行审查。丹麦南大学数学与计算机科学教授 Jacopo Mauro 补充道,另一种选项是形式化验证,即运用数学技术通过计算来验证代码行为是否正确。
此类方法已被用于验证 AI 生成的数学结果,但 Mauro 指出,将其应用于遗留代码需要“大量的工作”。他解释说,采用这种方法意味着代码可以自动进行检查,“这将比依靠人类来校验翻译是否正确更为可靠”。在此之前,他说,“人工验证仍然是必不可少的。”
当涉及的系统像基于 COBOL 运行的那些一样关键时,专家强调,必须绝对确保替代方案有效。“在许多情况下,迁移前后系统行为哪怕出现细微差异也是不可接受的,”Zaytsev 说。虽然 AI 确实能带来成本节约并提升速度,但遗留系统的复杂性意味着仅靠部分自动化是不够的。
“假设你有一根魔杖般的 AI,能处理你 99% 的代码,”Zaytsev 说,“那剩下的 1% 怎么办?这 1% 可能是一百万行代码,散布在各处,并以你在一生中能想象到的更多方式发生细微故障。”