站长之家注:在今年4月初的一个周末,美国新泽西州州长菲尔·墨菲(Phil Murphy)在每日疫情简报中作出了一个让人十分惊讶的公开呼吁:该州正在寻找了解COBOL的程序员,这是一种已有60年历史的编程语言,而该州的失业救济金系统正式由这种编程语言设计的。和美国全国一样,在疫情期间,新泽西州也有大量失业救济申请,但该州的数据处理系统没有为此做好准备,出现了故障。
墨菲表示,“我们这套系统已经有40多年的历史了”。对于COBOL程序员来说,这当然十分熟悉,在过去50多年里,使用这种编程语言的系统一直在困扰着美国政府机构和经济部门的内部系统。为此还专门雇佣了一大批精通诸如COBOL之类语言的程序员,用来修复政府和企业的系统代码。
近20多年来,许多州、联邦政府以及银行系统仍在使用这些古老编程语言。新泽西州并不是唯一一个依赖COBOL的地区,康涅狄格州州长也在此前表示,该州处理失业的计算机系统也由这种语言打造,由于故障也导致了失业处理速度被延长数周。康涅狄格州和其他几个周正在共同努力,招募可以更新这些系统的COBOL程序员。
这个COBOL语言为何会如此特别,以致于难以找到合适的程序员来修复系统呢?COBOL于1960年首次亮相,并广泛用于IBM大型机上,主要用于会计之类的业务上,同时IBM也在销售与COBOL兼容的大型机。
美国政府已经多次警告关键系统使用老旧编程语言的问题。GAO在一份2019年发布的报告中总结了10个继续大修的美国联邦计算机系统。例如,美国教育部于1973年实施了用于处理联邦学生资助申请的系统,该系统需要18个承包商来维护,并且由于该系统是用COBOL编写,因此需要特定的硬件以及较新的软件语言共同完成。
GAO认为COBOL是一种传统语言,这意味着代理商很难找到完全直到如何编写代码的人员,如果可以的话,专业承包商会收取额外费用。同时这也意味着,一旦系统再次崩溃时,可能没有人去修复它。新泽西州就是遇到这种情况,一旦系统不稳定,缺少合格的工程师。
尽管COBOL有着很长的历史,也有很多程序员使用C和Java,COBL依然是一种广泛使用的编程语言。它是经过实践得出的结果,因此在20世纪下半叶被银行和政府机构广泛采用的原因。
据路透社报道,如今全球将近一半的银行系统都在使用COBOL,并且超过80%银行卡的交易也都使用这种代码。
卡内基梅隆大学教授J. Ray Scott是仍在教授COBOL的少数教授之一,他表示“我展示的是1960年编写的COBOL程序,你今天仍然可以编译和运行它”。
Scott将缺乏COBOL程序员的原因归结为许多因素,80年代和90年代开始,缺少开源版本的软件极度缺乏,无法帮助本地连接到互联网获得新的数据库。
他说:“在近20年的时间里,人们确信COBOL已经死亡,所以没有人改进它,也没有人愿意学习它”,他还强调“COBOL在没有光盘驱动器之前就已经存在,更不用说互联网了”。
Scott说,COBOL不是一种特别复杂的语言。当他开始在匹兹堡的钢铁厂进行职业生涯规划时,那家公司刚好对钢铁厂工人进行能力测试,如果通过了考试,将被送到IBM进行为期两周的COBOL课程,之后进入IT部门任职。于是他误打误撞成为了一名程序员。
经营COBOL Cowboys的Bill Hinshaw说,这种具有60年历史的变成语言仍然有其生存空间,尤其是在关键领域有着难以被替代的地位。Hinshaw说“我们正在与越来越多的人考虑对COBOL进行现代化,并且不让它从此消失”。
新泽西州州长墨菲也对COBOL的要求作出表态,他认为目前大多数地方的系统都无法满足越来越庞大的日常工作需求,而在疫情结束之后,我们要怎么才能找到一个真正符合要求的COBOL程序员呢?
本文编译自medium,作者Dave Gershgorn,原文标题Our Government Runs on a 60-Year-Old Coding Language, and Now It’s Falling Apart