![]()
IRS、银行、航空公司以及全球各地的政府基础设施,有一个共同点:它们都依赖古老的计算机代码在支撑运行,而这些代码几乎没人敢碰,一旦出错就可能引发系统崩溃。
OpenAI认为自己可能找到了解决方案。10月19日,该公司宣称其最新AI模型在将用旧编程语言编写的老旧软件迁移为现代代码方面取得了"实质性进展",并表示这有助于企业"维护和现代化老旧系统"。
这可能是个意义重大的突破。OpenAI重点提及的语言之一COBOL,至今仍顽固地嵌入在全球关键基础设施的大量系统中。尽管数十年来人们一直努力将其淘汰出历史舞台,但这门语言却始终未能彻底消失。
"头脑正常的人都不会用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现代化的经济账已经发生了变化"。Anthropic发布该消息后,IBM股价大幅下跌——该公司的部分收入来源正是帮助企业维护遗留系统。
接受The Verge采访的专家一致认为,近年来AI工具在处理遗留代码方面确实取得了进步。但他们也提醒,OpenAI本周宣传的进展距离能够安全替换构建在这些语言之上的关键遗留系统,还有很长的路要走。
OpenAI发言人奥斯卡·海恩斯在给The Verge的邮件中承认,遗留代码"仍远未被彻底解决",并表示公司正在听取开发者和企业的反馈,探索构建更完善测试体系的方法,持续提升模型对编程语言的理解能力。Anthropic未在发稿前作出回应。
"OpenAI展示的评估结果没有触及关键难点:如何将一个复杂的遗留系统拆分成可以逐一替换的较小单元。"
荷兰特文特大学软件演化副教授瓦迪姆·扎伊采夫表示:"重写代码并不等同于替换系统。"系统确实包含大量代码——扎伊采夫说他见过的最大系统有2.5亿行COBOL代码,"这肯定还不是世界上最大的"——但这只是问题的一部分。他说,代码可能用多种语言编写,还要考虑可能以各种格式存储的数据。此外,还需要考虑与其他系统的技术集成,以及相关人员和组织的期望。
扎伊采夫表示,所有这些复杂性意味着"目前AI在替换或迁移遗留COBOL系统方面并未发挥主要作用"。
荷兰代尔夫特理工大学软件工程教授阿里·范德森告诉The Verge,OpenAI的评估同样没有反映出这种复杂的现实情况。他将该公司的博客文章形容为"浮于表面",指出文章对迁移任务的细节交代甚少,而其语言基准测试所评估的,是一个相对简单、定义明确的任务,涉及的系统与模型训练时接触过的系统类似。他还强调了维护老旧系统与真正实现现代化之间存在巨大差距。"维护当然比现代化容易得多,"范德森说,并将OpenAI用来评估其模型的任务形容为距离真正的现代化改造还有"光年"之遥。"OpenAI展示的评估结果没有触及关键难点:如何将一个复杂的遗留系统拆分成可以逐一替换的较小单元。"
最大的挑战未必在于重写代码本身。"主要的挑战其实并不在于理解系统如何运作,"伦敦帝国理工学院编程语言教授阿拉斯泰尔·唐纳森说。他表示,对于使用COBOL等语言的遗留系统来说,这种理解缺失是一个"非常常见"的问题,并补充说现在已经很少有人懂得如何用这些语言编程。尽管COBOL无处不在,唐纳森表示"头脑正常的人都不会用COBOL开发新项目"。
"在很多情况下,迁移前后系统行为即使存在细微差异也是不可接受的。"
唐纳森表示,这使得严密的测试变得至关重要。一种可行的方法是让新旧系统同时运行相同的工作流程,以检查两者行为是否一致。AI还可以为其代码翻译过程编写文档,理想情况下可以让熟悉旧语言的人员对工作成果进行审查。南丹麦大学数学与计算机科学教授雅科波·毛罗表示,形式化验证——一种利用数学技术来从计算角度验证代码行为正确性的方法——是另一种可选方案。
毛罗表示,这类方法已经被用于验证AI生成的数学结果,但若要应用于遗留代码,将需要"巨大的工作量"。他说,使用这些方法意味着代码可以实现自动检查,"拥有这样的能力,会比靠人工检查翻译是否正确更好"。但在此之前,他表示"人工验证仍然不可或缺"。
而当涉及的系统像运行在COBOL上的那些系统一样关键时,专家们表示,你需要绝对确定替代方案能够正常运作。"在很多情况下,迁移前后系统行为即使存在细微差异也是不可接受的,"扎伊采夫说。尽管AI确实能够节省成本、提升效率,但遗留系统的复杂性意味着部分自动化是远远不够的。
"假设你有一根神奇的AI魔棒,能够处理99%的代码,"扎伊采夫说。"那剩下的1%该怎么办?那1%可能涵盖上百万行代码,分散在系统各个角落,并以你一生都难以穷尽的各种方式悄悄出错。"
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.