选自IEEESpectrum
机器之心编译
编辑:蛋酱
75%到80%的公司都希望摆脱COBOL,原因是跟不上机器学习或云集成等新的发展。
最近,大型数据分析和风险评估跨国公司Verisk的软件工程高级副总裁SidMohanram正在负责公司系统从COBOL编程语言中迁移出来。
Verisk只是众多这样做的公司的其中一个。现在,公司们和政府正在探索除了运行世界上一些最关键应用程序的编程语言之外的其他选择。
「我们的目标是摆脱大型机。」Mohanram说道。
新冠疫情的蔓延为使用60年历史的古早编程语言COBOL编写核心计算机系统的机构们敲响了警钟,在美国,新泽西州、威斯康星州、佛蒙特州、爱荷华州、堪萨斯州,甚至联邦政府都面临着,一些系统无法在申请失业救济金系统出现历史性飙升的情况下维持良好运行。
但是,COBOL程序员的短缺并不是唯一的问题。在编程语言和软件开发的高速世界中,COBOL已经成为一个陈旧的(尽管仍然相当可靠)的机器。
「我们在COBOL中实施更改的速度很慢,人们开始寻找变通办法,」Mohanram说,这造成了所谓「技术债务」的积累。
「开发人员说:我需要进行更改,但我太忙了,无法进行COBOL更改,所以我不会触及现有的COBOL程序,但我会在COBOL之外再添加三个步骤,包括Excel电子表格或其他东西来应用更改。所以就有了现在这些非常过时的COBOL程序,以及一堆其他的东西作为获得最终结果的变通方法。」
仍然有这么多程序使用COBOL的原因之一是它出奇地稳定。但如今,对于许多应用程序而言,灵活性更为重要。
「COBOL代码是防攻击的,因为它几乎从不改变,」Diffblue的首席执行官MathewLodge说,这是一家为Java和其他更新的编程语言自动编写单元测试的初创公司。「但那是旧世界了,现状则完全相反——你必须时刻改变以保持竞争力。」
IBM的大型机运行着世界上大部分的COBOL代码,拥有一个致力于推进该技术的整个团队,因此客户可以继续使用该语言。Z是IBM最先进的大型计算机的品牌名称,IBM负责Z产品管理的副总裁BarryBaker说:「我们一直在这方面投资,哪怕仅是为了寻找工作人员,或是在工具功能和产品上帮助他们真正直观地了解跨应用程序的数据流。」
Baker说,用COBOL构建的应用程序通常没有很好的文档记录,有时甚至会丢失原始源代码的整个模块。与此同时,设计这些应用程序的人已经退休,有时甚至已经去世。此外,测试COBOL程序也可能是一个问题,因为许多COBOL程序是在单元测试普及之前的时代编写的。
「当测试与代码同时编写时,测试是最有效的,」Mohanram说。他补充说,现在最佳实践是先编写单元测试,因为单元测试描述了需求,然后编写实际函数以获得给定输入集的预期输出。「单元测试将迫使开发人员编写更容易测试的代码。」
然而,IBM的Baker表示,单元测试实际上已经为开发人员提供了相当长的一段时间。「大约20年前,当我还是一名开发人员时,我在自己的IBMZ开发中使用了测试驱动开发。」
SoftwareMining的创始人CyrusMontakab说,测试可能比翻译更昂贵、更困难,Verisk正在使用它的工具将COBOL代码翻译成现代编程语言。「我们一直告诉人们,现在开始翻译,这样你就可以在最后一个COBOL程序员离开之前对其进行测试。」
目前,也有AI工具可以支持自动编写单元测试,这可以加快流程并节省资金,比如Lodge的Diffblue使用强化学习来自动编写单元测试。
「如果想在现代软件流程中使用该代码,你不仅需要翻译代码,还必须提出一组单元测试来快速发现错误,」Lodge说,他的公司正在帮助大型养老基金用Java重写COBOL程序。使用自动化测试可以确保代码质量,同时跟上市场的需求。
路透社预估,年仍有亿行COBOL代码仍在生产中,运行着全球43%的银行系统和95%的ATM,包括红绿灯、航空公司、养老基金和工资系统都定期在COBOL上运行。
许多公司不愿意触碰更大的COBOL应用程序,只要它还能工作。「总是一再推迟,老IT主管说这不归自己管,」帮助企业替换COBOL的公司Astadia的首席技术官WalterSweat说。「他们不想冒险并将这件事推给下一代,但到了某个阶段,必须有人处理它。」
Sweat说,他认为退出COBOL是一种增长趋势。两年前,他采访过的潜在客户中只有一半希望将他们的系统迁移到不同的编程语言。现在,75%到80%已经希望摆脱COBOL。这是因为COBOL程序跟不上机器学习或云集成等新的发展。
对于许多传统银行来说,随着移动金融应用程序的爆炸式增长,这种编程语言可能会迎接未来的挑战,这些应用程序允许消费者在手机上完成从基本银行业务到商品交易的所有事情。然而,整个行业创纪录的利润说明了一个不同的故事,这表明这些传统银行已经能够建立自己的移动应用程序,这些应用程序由运行在COBOL中的服务和数据支持。
Baker表示,IBM认为企业中使用的COBOL不太可能很快消失,但将关键应用程序翻译成更灵活的语言比以往变得都容易。
参考链接: