COBOL的持久力:为什么60年前的语言仍然很受欢迎

2020-10-22 20:50:41

回过头来看20:20,你会有什么不同的做法?";我想我会……。

巴西的新数据隐私法是什么,在巴西做生意的公司需要知道什么…。

你在未来的应聘者身上寻找的三种技能或能力是什么?“最重要的是我……。

在技术领域,有一件事通常可以被认为是静态的经验法则,那就是事情在不断变化。创新,特别是在云时代,是不断发生的,很难跟踪,因为在一场日益加速的技术跨越游戏中,一种趋势取代了最后一种趋势。在软件开发方面也是如此,因为云本地组织追求无缝的CI/CD管道、DevOps和敏捷开发实践。

然而,与这一趋势背道而驰的是COBOL编程语言,尽管它是在20世纪50年代末开发的,但对于许多运行基于事务的遗留业务应用程序的组织来说,它仍然发挥着重要的作用。老化的语言仍然非常普遍,以至于每隔几年就会出现新闻报道,谴责它在业务关键系统中的存在,同时强调COBOL代码向组织和开发人员提出的各种问题。

COBOL的持久性最近得到了证明,因为冠状病毒大流行给广泛的IT基础设施带来了更大的压力。在美国政府2.2万亿美元的CARE刺激计划中,以及在处理不断增加的失业申领人数的过程中,编程语言被强调为一个主要问题,州政府机构将支票发放延迟归咎于COBOL,特别是缺乏可用的人才(这往往是一个真正的症结所在)。IBM甚至试图通过与Linux基金会的开放大型机项目(Open Mainframe Project)合作来解决这个问题,方法是推出一个免费的COBOL培训计划和一个技术论坛,允许COBOL程序员在病毒爆发期间提供免费的建议和专业知识。

虽然这似乎描绘了一幅毫无希望的旧语言正在不必要地扼杀创新的图景,但COBOL的持久性比看起来更微妙。有很多相关的因素可以解释为什么组织可能想要保留COBOL,而这并不是简单地把它清理掉然后把它抛诸脑后。虽然这并不是说这种语言--以及围绕它的文化--没有一些严重的问题需要解决。

COBOL最初开发于1959年,当时是一种面向业务的编程语言,几乎完全运行在大型大型计算机上,是实现通常基于纸质的业务流程现代化的一种非常有用的工具。该语言通常用于基于交易的处理,并继续为银行和公共部门使用的许多财务和行政系统提供动力。

根据路透社的报道,今天仍在使用2200亿行COBOL代码,而且没有显示出任何放缓的迹象。这背后的原因好坏参半,但很多时候归结为这样一个事实,即很难提出一个令人信服的商业案例来取代COBOL。考虑到它在大型机环境中的根深蒂固,以及应用程序本身几十年来的单一性质,这样做的成本和复杂性令人难以置信-正如澳大利亚联邦银行在2012年耗资超过10亿澳元(7.499亿美元)更换其由COBOL驱动的核心银行平台所表明的那样。

COBOL存在如此之久的另一个原因很简单,那就是应用程序实际上可以完全按照它们需要的方式工作,并且该语言并不一定过时。COBOL托管公司Micro Focus的全球产品营销主管德里克·布里顿(Derek Britton)说明了这一点,他辩称,COBOL最初的用例在今天仍然和最初开发时一样重要。

对于COBOL来说,一种语言的经典用例--它是著名的为商业应用程序设计的--是相当不言而喻的,并且在今天仍然是正确的,就像它们在整个COBOL历史上一样。布里顿说,COBOL应用程序是世界上一些最成功的组织的命脉,也运行着全球无数的政府部门。

这些应用程序与COBOL在数据密集型工作(需要访问、处理、操作和报告大量明确定义的结构化数据)、重要的算术或处理活动(处理复杂的数值计算,没有错误)以及高速和大规模工作(在短时间内处理数百万事务)的能力相当。毫不奇怪,COBOL仍然是银行、保险、医疗保健、物流和许多其他行业的基石。

正如前面提到的,有几个主要行业依赖于COBOL基础设施,在金融部门、政府服务、电信和医疗保健领域,应用程序占用的空间很大。分析公司CCS Insight的研究总监Bola Rotibi表示,由于COBOL语言的性质及其在商业交易中的熟练程度,这些行业是最需要COBOL开发人员人才的行业。

Rotibi说,COBOL应用程序主要用于交易处理应用程序,因此是金融服务部门和其他依赖于快速且通常是成批处理大量交易的行业的必需品。

负责计算税收收入和回报并向公民支付福利的政府服务,以及处理乘客票务的航空公司,都依赖于需要高性能和可靠性的交易操作。这就是为什么他们的COBOL应用程序对他们的业务运营仍然至关重要的一个关键原因。

作为COBOL的主要实现者之一,金融部门是受新冠肺炎大流行影响最明显的部门之一。根据欧洲金融科技模块银行首席执行官兼联合创始人Vilve Vene的说法,COBOL依赖和相关的技能挑战是疫情爆发后变得明显的许多问题之一。

Vene解释说,在COBOL上运行的系统带来的问题是,向外部世界开放这些系统是一个非常漫长、复杂和昂贵的过程。

到目前为止,我们已经看到银行投入巨额资金,通过在其基础上建立额外的层来改造其遗留系统。然而,这不是问题的有效解决方案,因为COBOL从根本上不是为了支持实时需求流而构建的。

尽管Vene辩称,出于竞争原因,COBOL以及所有遗留的银行基础设施最终都应该被更现代化的架构取代,但她表示,这将不得不按照优先顺序逐步完成,因为更换整个系统太过颠覆性。

虽然技能短缺可能在主要需求高峰期最为明显,比如新冠肺炎推动的需求高峰期,但这个问题几十年来一直是一个令人担忧的话题。人才的缺乏是由几个关键因素推动的,但最重要的一个因素是教育的匮乏,考虑到大学里的计算机科学课程基本上不再教授这种语言,导致严重缺乏新的、年轻的开发人才。

对于许多组织来说,围绕COBOL的技能短缺仍然是一个相当严重的问题,这不仅是因为许多开发人员不熟悉这种语言,还因为COBOL的工作通常需要对COBOL应用环境有更高层次、更具体、更错综复杂的理解。拥有40年大型机技术经验的Macro 4大型机研发经理基思·班纳姆(Keith Banham)详细阐述了这个问题,他将技能短缺描述为一场比语言本身更深层次的危机。

重要的是要认识到,技能危机不仅仅是缺少懂得如何用COBOL语言编写代码的人。更深层次的问题是缺乏应用知识。能够用COBOL编写代码是第一步。真正困难的部分是理解应用程序的功能。班纳姆说,如果你没有这方面的知识,你就有犯错误的风险。

具有应用程序知识的经验丰富的COBOL开发人员会理解,例如,更改系统的一个部分中的代码将如何影响另一个部分。当你失去这种体验时,新的开发人员就不会意识到做出改变的影响。

这方面的一个例子是COBOL程序员使用复制本,这允许他们将相同的代码段插入到系统中的许多位置。任何更新共享代码的人都需要确切地了解他们的更改将如何影响系统的所有不同部分。这种广博的先验知识在COBOL世界中非常重要,以至于组织以前一直紧紧抓住年长的COBOL程序员不放,因为他们掌握着可以说是通向王国的钥匙。

从开发人员的角度来看,COBOL可能是一门非常有用的语言,因为它仍然被世界上一些最大的企业广泛使用,绝大多数业务应用程序运行在包含COBOL代码的IBM大型机上。SaaS技术培训平台Pluralsight EMEA高级副总裁肖恩·法林顿(Sean Farrington)表示,COBOL的持续流行为潜在开发人员提供了一个有吸引力的机会,因为理解COBOL和更现代的语言是一项值得拥有的技能。

尽管COBOL年代久远,但它仍然支撑着银行和公共部门使用的许多金融和管理系统。Farrington解释说,如果没有使用COBOL的技能,就不能维护这些遗留代码,也不能对其进行现代化或更新。

例如,如果传统银行想要跟上灵活的金融技术,拥有既能使用COBOL技能又能使用较新语言的人才是关键。无论是在不损失功能的情况下将COBOL转换为Java或Python等现代语言,还是将COBOL与新工具集成,仍然需要该语言的专业知识。由于数十亿行的COBOL代码仍在使用中,这很可能是一项开发人员在未来几年将受益于的技能。

然而,尽管对于COBOL开发人员来说,工作机会可能是可靠且极其安全的选择,但这项工作可能相对平淡无奇。随着开发人员的追捧,COBOL人才在某种意义上往往会被归类,几乎没有机会扩大他们的视野。对于那些希望在快速发展的、现代的“初创企业”这样的环境中工作的开发人员来说,维护数十年的COBOL体系结构的工作可能很难说服他们。对于开发人员来说,入门也可能相当困难,因为它的语法与其他语言有相当大的差异。

鉴于COBOL在关键行业中的广泛渗透性质,它不太可能在短期内完全消失。从根本上说,有一个完整的工具和服务生态系统,这些工具和服务已经成长为支持和维护COBOL应用程序的寿命。

根据Rotibi的说法,虽然已经做出了广泛的努力来简化现代开发方法的语言,但她仍然期待着全面更新COBOL基础设施的微妙、渐进的行动。

我确实认为将继续对现有的COBOL应用程序进行长期稳定的现代化改造。但Rotibi表示,这将是在一个组织的数字化转型战略的背景下进行的,也是在权衡重新设计现有COBOL解决方案的成本效益时出现的。

许多COBOL应用程序在它们支持的业务逻辑和事务方面仍然适合用途。在发展运行COBOL应用程序的核心平台方面取得了长足的进步,使它们能够满足现代事务和应用程序解决方案的操作性能要求。尽管已经做出了一些努力来使COBOL语言的某些方面现代化,但我认为今天已经有大量的现代软件应用程序技术可用,足以满足未来所需的那种应用程序的需要。

然而,Rotibi强调,这不会在一夜之间发生,而且这种语言不会消失,他注意到生产环境中仍有数十亿行代码。她提到的使COBOL本身现代化的努力也在CIO中巩固了自己,因为相关的成本节约,他们认为完全淘汰COBOL语言和相关的大型机是极其可行的替代方案。为了将COBOL带入21世纪,已经做了很多努力,包括促进COBOL在大型机上与Java并行运行的解决方案,甚至最近推动让COBOL应用程序在Kubernetes上作为容器运行。

再举一个例子,Compuware负责产品管理的副总裁萨姆·克努森(Sam Knutson)表示,IBM在更新COBOL编译器方面所做的努力使这种语言得以经久不衰。

Knutson解释说,COBOL的独特之处在于编译器,IBM在每隔几个月就不断改进编译器方面做得非常出色。

这些改进确保了COBOL的一致速度和性能,并有助于微调机器码,使其能够最有效、最高效地驱动大型机上的最新和最大的计算资源。这就是为什么世界经济理所当然地运行在超过2200亿行的COBOL代码上,而且这个数字每天都在增加。

然而,不管COBOL的未来是光明的、平淡的还是黯淡的,它的一个主要问题是围绕着它周围的文化。如果组织想要保持足够的COBOL开发人员人才库,语言和相关的基础设施需要进行某种程度的现代化,以便更容易地向开发人员推销。归根结底,现代开发人员最不想做的事情就是开发一种单一的、老化的、特殊的语言,在其职业生涯的剩余时间里从事维护工作。

如果大型机上的传统开发经验仍在使用--以孤立的文化、僵化的、厌恶实验的流程和基于文本的“绿屏工具”而臭名昭著--组织机构就不能指望吸引到他们迫切需要的有才华的下一代程序员,作为他们关键任务的COBOL应用程序的下一任管家,克纳特森继续说道。

面对不断升级的期望,他们不能指望有才华的新开发人员在时间、努力和灵感上为数字水平低下的文化、流程和工具支付个人税。这等同于希望竞争对手扼杀自己的创新,以确保竞争对手有时间迎头赶上;这永远不会发生。