人工智能可以解决华尔街的“意大利面条式代码”危机吗?
在陈旧的代码崩溃,并且导致数十亿美元的损失之前,IBM 和微软等科技巨头希望人工智能可以将陈旧的代码翻译成更现代的编程语言。
插图来源:CHRIS GASH
世界上没有多少企业是以磁带或者软盘为基础建立起来的,因此缺乏能够修复这些已经有几十年历史的技术的专家并不构成问题。但Cobol语言却打破了这一规则——华尔街(Wall Street)和美国联邦政府每年都需要依靠该语言来处理价值数万亿美元的交易,而Cobol语言是一种已经有64年历史的编程语言。随着Cobol语言的不断老化,这些大型机构已经很难找到能够更新其古老系统的人员。
一旦出现问题,许多公司就会求助于82岁的、绰号为“Cobol牛仔”(Cobol Cowboy)的比尔·欣肖(Bill Hinshaw)。欣肖在他位于美国得克萨斯州北部的家庭办公室工作,在那里他负责管理一个由大约600名年迈的Cobol语言工程师组成的远程团队——其中一些人在20世纪六七十年代就开始做程序员。每周,这些牛仔们都会提供应急响应服务,包括在2021年为来自美国艾奥瓦州的一家已经有93年历史的公司Superior Welding Supply提供应急响应服务,这家公司唯一的Cobol语言专家在公司的软件崩溃前去世了。
各类公司都在努力解决维护陈旧代码(通常是Cobol代码)的问题,这些代码仍然可以运行,但通常文档不全,难以修改,这是程序员称之为“意大利面条式代码”(spaghetti code)普遍问题的一部分。多年来,政府机构、媒体和大型银行一直在为技术基础设施的老化敲响警钟。现在,IBM和微软(Microsoft)等科技巨头认为,它们可能已经找到了让我们摆脱对艾森豪威尔(Eisenhower)时代的技术的依赖的强大工具:生成式人工智能。
“意大利面条式代码”
当我们把钱从储蓄账户转到支票账户时,我们不会看见Cobol语言,也不会想到它,但它对银行的日常运营却至关重要。这些操作还包括把客户添加到数据库、实现ATM交易和处理工资单。自1973年以来,美国联邦政府一直使用同一系统处理学生助学金申请,该系统由大约100万行Cobol代码组成。
据信息技术公司Open-Text称,目前依旧在使用的Cobol代码大约有2,200亿行到8,000亿行。埃森哲(Accenture)的全球银行业务主管迈克尔·阿博特(Michael Abbott)说:“当你深入研究绝大多数的大型银行真正的核心银行体系时,你就会发现,这些银行都在使用Cobol代码。”
实际上,在1959年程序员设计出Cobol语言之后,它就迅速成为了数据处理语言,这意味着银行、保险公司、政府机构和任何其他处理TB级信息的公司都要编写和维护数百万行Cobol代码。
然而,传统的Cobol语言在效率和通用性方面都比不上20世纪70年代及之后出现的C语言、Java和Python等新兴语言。这些语言的构建方式不同,允许工程师更好地构建和重用以前编写的代码。最终,新创企业和位于硅谷(Silicon Valley)的公司开始使用Java或者Python,而不是Cobol语言。
随着Cobol语言失宠,维护成本也随之飙升。此外,由于遗留的Cobol代码往往文档不全,因此修复和升级需要更长的时间。在快节奏的经济环境中(例如,利率变化迫使银行迅速更新提供给客户的产品),重大改革可能并不可行。
阿博特称:“这些企业和机构可能需要9个月到12个月的时间来解开意大利面条式代码难题并更新其中的产品,从而推出新产品。在现代架构中,这能够在几周内完成。”
与此同时,升级的成本可能高达数亿美元。当澳大利亚联邦银行(Commonwealth Bank of Australia)在2017年完成其核心银行系统的更换时,整个过程耗时五年,耗资近7.5亿美元。而且,如果操作不当,升级可能就会导致灾难。2022年,英国金融监管机构对英国信托储蓄银行(TSB)处以6,000多万美元的罚款,原因是该银行未能成功地迁移到新信息技术平台。此前,数千名客户于数周内无法进行在线支付。
代码助手
最近的一个下午,IBM研究中心(IBM Research)的首席科学家鲁奇尔·普里(Ruchir Puri)在公司位于纽约市北部绿树成荫的园区里跳到了一块白板前。这位留着大胡子、头戴棒球帽、身穿白色西服衬衫的高管,用两只马克笔勾勒出金融机构如何使用watsonx代码助手将数百万行Cobol代码翻译成Java。
是的,普里表示,代码转译器或者翻译器已经存在了几十年,但是这些陈旧的系统把意大利面条式Cobol语言翻译成意大利面条式Java语言。换句话说,记录不全、难以理解的传统语言变成了记录不全、难以理解的现代语言。
他指出,IBM的解决方案超越了现有的转译器。通过生成式人工智能,或者与OpenAI的ChatGPT相同的技术,IBM可以将文档不全的Cobol代码转换为结构化、易于解析的Java代码。普里称,IBM的工具能够把公司代码库实现现代化的速度提高10倍。
这将为华尔街和美国政府节省了数十亿美元。比如,2018年2月,美国空军(Air Force)完成了负责管理作战任务的物资和设备的计算系统的现代化改造。根据2019年的一份报告,这一为期三年的过程,包括把数百万行Cobol代码翻译成Java代码,每年为美国政府节省了2,500万美元的计算成本。那么,试想一下,如果生成式人工智能将美国空军的系统实现现代化所需要的三年时间缩短为几个月,纳税人就可以节省多少钱。
不出所料,这为IBM带来了重大商机。普里指出,大公司都争相使用其翻译软件(将Cobol语言翻译为Java语言)。他说:“大多数《财富》美国100强的企业都是我们的客户,而且所有这些企业目前都在使用我们的软件。”
对于微软旗下的开发者软件平台GitHub的首席执行官托马斯·多姆克(Thomas Dohmke)来说,Cobol语言也是首要考虑因素。“Cobol仍旧在大型机上运行,这是一个比我们想象的要大得多的社会问题。”他最近在X上发帖说道。多姆克表示,他在过去的一年里听到的关于Cobol语言的问题比他过去30年听到的还要多。
就像向IBM寻求帮助一样,客户们也在向GitHub寻求帮助,看看它的生成式人工智能助手GitHub Copilot如何帮助他们实现传统基础架构的现代化。
Copilot采用与ChatGPT相同的算法,类似于电子邮件的自动补全功能。当程序员键入代码时,Copilot会以GitHub公共项目中所有的编程语言为语料进行训练,并提出行编辑建议。多姆克补充道,程序员还能够使用该工具突出显示Cobol代码,并要求Copilot解释这些代码的实际作用。就像IBM自己的编码助手一样,Copilot也可以把Cobol代码翻译成Java或者其他编程语言。
他说:“生成式人工智能和Copilot将使我们在维护这些陈旧代码库时更加轻松,并最终实现现代化。”
退休
人工智能炒作已经达到了高潮,甚至Cobol牛仔欣肖也在为一家新创企业的人工智能和Cobol产品提供建议。欣肖在他位于美国得克萨斯州的办公室门上挂着一顶皮帽,但他并不担心人工智能会迫使他退休。“在凌晨三点,你可能会接到一个电话,说这个程序崩溃了。”欣肖说道,“你如何让人工智能参与其中,从而在一个小时内让它恢复正常运行呢?”
IBM和GitHub的高管们也煞费苦心地表示,人类应该参与代码翻译和实现现代化的每一步。两人都承认,人工智能生成的代码并不完美,因此应该像人类生成的代码一样,经过一系列的测试。例如,斯坦福大学(Stanford University)的研究人员发现,不使用OpenAI编码助手的开发人员编写的代码往往比使用该助手的开发人员编写的代码更加安全。
但是,尽管存在风险,像埃森哲的阿博特这样的金融行业从业者还是希望,像IBM或者GitHub这样的产品能够解开经常使大银行陷入困境的意大利面条式代码难题。他在谈到生成式人工智能时说:“我要告诉大家,我认为它大有可为。”
*****
技术老化的基石
许多企业和美国联邦政府依然在使用这些20世纪的编码语言,而且运行良好。
1957年 Fortran语言
约翰·巴克斯(John Backus)带领IBM的一个团队创建了公式翻译(Formula Translation,或称Fortran),这是最早把自然语言(比如“if语句”、“读”、“写”)纳入其语法的编程语言之一。
1959年 Cobol语言
实际上,包括著名程序员格蕾丝·霍珀(Grace Hopper)在内的一批计算机科学家推动了面向商业的通用语言(Common Business-Oriented Language,或称Cobol)的开发,该语言成为了实际上的数据处理语言。
1972年至1973年 C语言
丹尼斯·里奇(Dennis Ritchie)在贝尔实验室(Bell Labs)开发出了C语言,该语言至今仍然是最流行的五种编程语言之一。
1983年 Ada语言
法国程序员让·大卫·伊克比亚(Jean David Ichbiah)和他的团队设计出了Ada语言,该语言在20世纪90年代曾经一度成为美国国防部(Department of Defense)的首选编程语言。
1987年 Perl语言
美国程序员和语言学家拉里·沃尔(Larry Wall)发布了Perl语言,在Python取代它之前,Perl语言在21世纪初掀起了一阵小高潮。
译者:Zhy