首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

80岁都无法退休的COBOL程序员:他们非要扶我起来迁移老系统

上古编程语言COBOL火遍全球,但我建议你不要学。

COVID-19疫情的蔓延,让美国10%的劳动力失业,人数达到了1700万。但美国至少有12个州的失业救济系统运行在已经有60年历史、使用COBOL编程语言的大型机上。这迫使政府机构出手争抢平均年龄已达60岁的COBOL程序员为他们解决各种系统故障。

不仅仅是政府机构,当下全球财富五百强企业的系统当中有90%都运行在COBOL基础之上,这些系统构建于几十年前,如今已经很难找到关于其设计思路的说明文档,因此政府机构及企业只能依赖长期在职的程序员们回忆这些具体细节。这些系统的代码编写方式陈旧,没有模块化的概念,像“意大利面条”一样交织在一起,牵一发而动全身,极难维护。

现在很多COBOL职位的招聘要求拥有20年工作经验,但开出的年薪却只有35000美元。年轻人也不愿意学这种复杂的过时语言,这就意味着这些已经60岁高龄的COBOL程序员至少还需要在未来一二十年里继续维护这些老系统。

COBOL:60岁的激进编程语言

COBOL的发明人Grace Hopper绝对是个现象级的人物。她拥有耶鲁大学数学博士学位、在瓦萨大学担任教授,并曾出任美国海军少将职务。她对整个计算领域的贡献,单从专为纪念她而命名的项目数量就可见一斑。国家能源研究科学计算中心以她命名Cray XE6超级计算机,海军当中也有一艘“Hopper号”导弹驱逐舰——该舰的座右铭是“Aude et Effice(敢想敢为)”,很可能正是Hopper本人的生活准则。

Hopper致力于在计算机能够理解的范围之内,开发出一种更接近英语表达的编程语言;此外,她还开发出了世界上第一款编译器。这也为FLOW-MATIC等一大批早期编译语言打开了大门。这些贡献,让她在1959年的数据系统语言大会(CODASYL)上获得了一个宝贵的席位。当然,她还协助制定并开发出了面向公共业务的COBOL语言。在1959年6月23日的首次CODASYL会议之后,她很快于次年4月发布了COBOL语言及编程规范。

COBOL当中包含着一系列突破性概念。可以说,该语言最重要的特性就是能够运行在不同制造商生产的硬件之上——在当时,这是一种前所未有的重要特性。COBOL语言经过精心设计,允许程序员使用与英语相近的词汇表达,能够处理大量数据并拥有极高的数学运算精度。

COBOL语言的保留字(构成该语言的可用字)总词汇量接近400条。程序员可以将这些字串连起来,建立起语法意义,进而开发出完整程序。任何熟悉其他语言的程序员朋友,都会马上意识到COBOL的保留字确实相当丰富。相比之下,C语言只有32个保留字,Python语言则为33个。

COBOL的另一大特性,在于其严格要求开发者将某些程序行放置在特定行当中。没办法,这是打孔卡时代遗留下来的问题。如今,程序员在COBOL编写格式方面拥有更大的自由空间,也不必再用大写字母输入所有内容了。为了体验COBOL的最初面貌,下面一起来看这段代码示例:

代码语言:javascript
复制
IDENTIFICATION DIVISION.

      PROGRAM-ID. Hello-World.

      DATA DIVISION.

      FILE SECTION.

      WORKING-STORAGE SECTION.

      PROCEDURE DIVISION.

      MAIN-PROCEDURE.

           DISPLAY "Hello world, from How-To Geek!"

           STOP RUN.

      END PROGRAM Hello-World.

蓬勃发展几十年,如今却无法迁移和升级

虽然用今天的眼光看,COBOL的设计已经非常笨拙,但在刚诞生的时候,这绝对是一种革命性的编程语言。COBOL在金融部门、联邦政府以及大型企业/机构中备受青睐。究其原因,出色的可扩展性、批处理功能以及数学精度成为COBOL的致胜之道。它被广泛安装在世界各地的大型机中,长久扎根并蓬勃发展。如同顽固的杂草,COBOL似乎永远无法被彻底消灭。

那么,当下到底有多少系统仍然运行在COBOL之上?结果绝对令人惊讶。根据路透社2017年发布的报告,我们看到了以下令人瞠目结舌的统计数据:

  • 目前,全球仍有2200亿行COBOL代码被持续使用。
  • COBOL在全部银行系统基础设施中占据43%。
  • COBOL支持的系统每天处理3万亿美元的商业交易。
  • COBOL处理着95%的ATM机刷卡业务。
  • COBOL支撑着高达80%的店面信用卡交易操作。

如大家所见,如果COBOL及相关系统突然消失,人类社会很可能会瞬间崩溃。银行账户与支票清算服务,外加面向公众的各类基础设施(包括ATM机与交通信号灯)仍在使用几十年前编写的COBOL代码。

这类陈旧系统的升级之路绝不像听起来这么简单。因为此类系统往往扮演着极为重要的角色,意味着各分支机构、金融、政府乃至整个商业世界都在24/7全天候依赖于这些系统。另外,其中的COBOL代码老旧、分层而且往往极度缺少说明文档。再加上升级过程不能破坏系统的正常运行,导致整个过程就像是在正在前进的飞机上拆下螺旋桨、然后换个喷气发动机上去。

那些迁移失败的案例…

去年,美国政府问责办公室曾在报告中26次提到COBOL,并敦促各机构对核心陈旧技术进行现代化升级。HP Marin Group首席技术官Phil Teplitzky表示,目前仍在使用的COBOL代码数量超过2400亿行,它们的存在完全是为了支撑企业继续使用早已陈旧不堪的计算系统。

这些系统构建于几十年前,如今已经鲜有关于其设计思路的说明文档,因此政府机构及企业只能依赖长期在职的程序员们回忆这些具体细节。Teplitzky将其称为COBOL“民俗学”。更可怕的是,很多专家已经去世,而在救市法案要求对这些系统的代码做出重大修改时,在职人员往往感到无从下手。

COBOL代码的陈旧编写方式,同样给更新带来了挑战。现代计算语言会将程序拆分成多个块,每个块拥有明确且特定的用途。COBOL程序员则往往将所有内容编织在一起,意味着对其中任意部分的代码做出变更,都有可能影响或损坏程序的其他部分。这种现象被称为“意面代码”,彼此缠绕的状态令代码修改比学习编程语言本身难上十倍甚至百倍。

除了风险,迁移至现代系统的方案还存在不少经济障碍。维持这类大型机与COBOL程序的正常运转需要花费惊人的成本,考虑到代码本身仍能正常运行,各机构真的有必要放弃一切、重新开始吗?决策者很难做出这样的判断。

希尔斯伯勒县学区的学生信息系统就是基于COBOL构建的。该系统最初安装于1984年的IBM大型计算机中,由14名COBOL程序员和大型机操作员负责维护,每年维护花费150万美元。与其他大型学区相比,该学区的学生需要在这种又老又笨重的大型台式机组成的计算机实验室中学习,而不是在配备较小平板电脑的教室中。他们不得不进行升级,希望能将该系统从COBOL迁移到Java。“但他们花了四年,仍然没有完成。”他们的顾问COBOL Cowboys公司的Hinshaw表示。

澳大利亚联邦银行曾在2012年借助埃森哲和SAP替换了其核心COBOL平台。这个项目十分复杂,不同时代的老系统紧密交织在一起,一旦失败,成千上万客户的帐户数据就会消失。转换成功前后花去五年时间,最终成本为7.499亿美元(约合10亿澳元)。

这还是一切按计划进行的结果。再来看另一例,英国银行TSB在2018年被迫进行了一轮COBOL系统迁移,由于执行不力,导致整个银行的正常交易中断数日,最终迁移成本为3.3亿英镑——这还不包括实际迁移产生的工程费用。此外,TSB在系统崩溃期间还因财务欺诈损失了4910万英镑。

客户赔偿总额更高达1.25亿英镑,TSB方面还被迫投入1.22亿英镑雇用新员工以处理多达204000例客户投诉案。首席执行官因此引咎辞职,到事件两年后的今天,TSB仍没能彻底走出这片阴影。

“真心不推荐你学习COBOL!”

大多数COBOL代码都运行在大型机上,而这些计算设备出自IBM之手。多年以来,IBM公司一直在努力帮助客户物色COBOL技术专家,并说服年轻人继承这门“老手艺”。

就在上周,IBM方面宣布推出一项新的培训课程,除了向初学者传授COBOL知识之外,也帮助经验丰富的专业人员进一步提升自身水平。IBM公司副总裁Barry Baker表示,“事实上,某些关键系统一直没能得到应有的关注。现在的年轻人有必要了解并掌握某些早期技术,这也足以支撑起理想的职业生涯。更重要的是,专业的传承具有重大意义。”

Gartner方面估计,目前全球COBOL程序员的平均年龄已经超过60岁。掌握COBOL编程技巧的程序员要么退休了、要么正在考虑退休、要么已经不幸离世。是的,能够保障这些重要系统正常运转的技术人员群体正在快速萎缩。新的、年轻的程序员们压根不知道怎么使用COBOL,而且大多数人也不想维护或者更新这些陈旧的系统。

在2004年进行统计时,Gartner方面发现拥有COBOL技能的专家约有200万名,这一数字每年下降约5%。瑞士联合银行的统计数据则显示,目前全球软件开发者总数约为2500万。通常,当对编程语言的需求超过程序员供应量时,技术行业就会做出调整。近年来,大学中的计算机科学课程正成倍增加,也出现了不少帮助人们快速掌握Java、Python以及其他语言的开发训练营。但COBOL,显然不在此列。

COBOL的全称为“面向商业的通用语言”,诞生于上世纪五十年代末,当时大学中甚至还没有任何计算机科学课程。在缺少学术界支持的情况下,众多COBOL程序员开始在政府机关、保险、银行以及票务预订等领域使用该语言,他们也被广泛视为科技行业的第一代蓝领工人。

斯坦福大学退休教授Gio WIederhold指出,“我个人真心不推荐现在的学生们学习COBOL。跟这种语言相关的全都是维护性工作,给不了人什么有意义的启发。”Wiederhold曾经培养出成千上万计算机科学家,他的学生先后在苹果公司、Facebook以及谷歌等硅谷科技巨头工作。他还回忆道,斯坦福大学自从1979年迁址以来就再没设置过COBOL课程。

75岁的Mahmoud Ezzeldin表示,“这是一场灾难。”曾为保险公司Blue Cross Blue Shield与美国国税局工作的他拥有数十年的COBOL计算机系统工作经验,他说“COBOL确实是种很难掌握的语言,而且在设计上也没有考虑到互联网这一运行背景。现在的大学生都喜欢学点简单的东西,这不怪他们。”

Gartner公司分析师Thomas Kinect则认为,企业及其他组织需要在招募COBOL人员方面再加把劲,包括开出更高的薪酬。否则,这些老设备和老系统就要停摆了。他强调,“看看那些招聘启事,大家就能感受到这有多荒谬了。这些职位的入门要求是20年工作经验,但开出的年薪只有35000美元。

这个问题迫使已经退休的COBOL资深大牛Bill Hinshaw再度出山,建立了COBOL Cowboys公司。这是一家私人咨询企业,专为那些身陷绝望、找不到任何COBOL程序员的企业客户提供帮助。他们清楚地知道,当下全球财富五百强企业的系统当中有90%都运行在COBOL基础之上。

Hinshaw说,在担任兼职顾问的20位“牛仔”中,有许多已经达到退休年龄,尽管有些“年轻人”:“好吧,我称他们为年轻人,但他们也已经50多岁了。”这些经验丰富的COBOL程序员,他们修补各种故障,重写编码手册,使新系统与旧系统一起工作,但只按时薪100美元来获取相应报酬。

小结

维持现状不可行,但全面升级似乎同样不靠谱。无论如何,想要切实改善事态,唯一的方法就是寻找受控且谨慎的现代软件与硬件迁移道路。

为了在实现这一目标的同时,不致引发业务中断、数据丢失以及系统宕机,各类机构需要投入大量专业人才与金钱。而这,还仅仅是成功迁移的一半;另外一半则在于COBOL专家与时间周期。遗憾的是,目前我们既找不到充足的COBOL专家,也没有太多时间可耗。

参考链接

https://www.howtogeek.com/667596/what-is-cobol-and-why-do-so-many-institutions-rely-on-it/

https://news.bloomberglaw.com/banking-law/an-ancient-computer-language-is-slowing-americas-giant-stimulus

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/NbBqwLT6eFo6Rs5RMPSL
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券