一场疫情,炸出了退休的COBOL程序员

COBOL编程语言,估计大多数程序员从没听说过,我这样的编程老司机,也是只闻其名,从未一睹芳容。出门问了问度娘,答案如下:

COBOL语言,是一种面向过程的高级程序设计语言,主要用于数据处理,是目前国际上应用最广泛的一种高级语言。COBOL是英文Common Business-Oriented Language的缩写,原意是面向商业的通用语言。它采用 300多个英语单词作为保留字,以一种接近于英语书面语言的形式来描述数据特性和数据处理过程,因而便于理解和学习。COBOL语言是专门为企业管理而设计的高级语言,可用于统计报表、财务会计、计划编制、作业调度、情报检索和人事管理等方面。

为什么突然谈到COBOL语言呢?今天看到一篇文章,新泽西州州长菲尔·墨菲在每天的冠状病毒简报中,做出了不寻常的公开呼吁:该州正在寻找懂得COBOL的程序员志愿者

这又是什么情况?原来由于冠状病毒在美国爆发后,美国迎来了失业潮,大量的美国人申请失业救济。而该州的失业救济金系统就是采用COBOL语言编写的,令人难以置信的是,该系统已经有40多年的历史。四十多年了,该系统还在运转,也不知道是幸运还是不幸。有一点可以确定的是,四十多年前的程序员可没预计到有这么大的访问量,自然需要有人维护才行。

现在的问题是,当年懂COBOL语言的程序员都已经退休了,而COBOL语言作为一种面向商业的通用语言,比C语言历史还悠久,但其生命力却远逊于C语言。新生代程序员没人去学习COBOL语言,而老一代程序员渐渐老去,COBOL语言如同众多的其它程序设计语言一样,即将消失在历史的长河中。

新泽西州还不是唯一依赖COBOL的州。康涅狄格州州长上周表示,康涅狄格州处理失业的计算机系统也正在运行,这导致长达数周的处理延误。康涅狄格州和其他四个州正在共同努力,招募可以更新该州软件的退休COBOL程序员。

在计算机发展日新月异的时代,我们理所当然的认为新技术会不停淘汰老技术,以至于作为程序员,时刻有一种压力,总怕自己被时代淘汰。但我们有时又高估了技术更新的速度。举个简单的例子,相对论、量子力学的提出有一百多年了,现代人有多少懂?计算机从发明伊始就采用了冯.诺伊曼体系,至今仍然没有突破。RSA非对称密码算法从上个世纪七十年代公布,至今仍然在安全领域发挥着重要的作用。被认为淘汰的COBOL语言,其实并未退出历史舞台。

2017年,路透社调查发现,全球目前仍有2200亿行COBOL代码,占据活跃代码的80%,大约95%的ATM交易通过COBOL程序。

为什么这些系统不早进行更新换代呢?其实美国政府责任办公室(GAO)已多次警告在关键系统中使用遗留编程语言。GAO在2019年发布了一份报告,汇总了10个急需大修的联邦计算机系统。例如,教育部用于处理联邦学生资助申请的系统于1973年实施。该系统需要18个承包商来维护,由于该系统是用COBOL编写的,因此需要专门的硬件,并且很难与较新的软件语言集成。

这涉及到软件系统的一个设计原则,就是如果一个系统能够正常工作,就不要去动它。很多刚进入编程行业的新手,经常会抱怨其维护的一堆垃圾代码。问题是就算是垃圾代码,只要能工作,没有哪个老板会放心你去修改,谁知道你修改之后会引爆什么雷呢?而且即使让新手去做一遍,大概率产出的依然是垃圾。这也是为什么从上世纪90年代开始,美国多个行业专家建议更换基于COBOL的系统,否则系统维护将变得越来越难,但这些系统依然顽强存活着的原因。

由于COBOL程序员的匮乏,导致人们对像COBOL Cowboys这样的初创公司越来越有兴趣,这些公司由年长、经验丰富的程序员组成。COBOL Cowboys的大多数员工,早就到了退休年龄,老头子们嘴里的“年轻人”,其实也都过了五十岁。

一位60多岁的COBOL程序员,曾在2012年遭到解雇,被年轻程序员顶替了岗位,但只过了两年,原雇主又找回来求他继续返岗工作。

还有一位70多岁的COBOL程序员,都已经用上了吸氧器,每天早上仍要搭乘政府派来的警车,前往办公室工作。

为什么中国没有出现这种情况?那是因为中国的计算机信息化比美国晚得多,COBOL是大型机时代的产物,而计算机在中国蓬勃发展,已经是微机时代和互联网时代了。这有时也是后发国家的一项优势,没有过多的历史包袱,可以尽可能的采用最先进的技术。

其实中国也开始慢慢有一些历史包袱了,比如我们公司使用的内部办公系统,只支持IE浏览器,但这套系统公司一直在使用,各方面都契合公司的流程,而这套系统也已经无人维护。切换新的系统,成本又太高,历史数据、用户习惯、流程等等,都难以解决,就这样一直拖着。中国也有大量的网站仍然使用Flash,只支持IE浏览器等等问题。

也许,等我们这代程序员退休的时候,也会被猎头争抢,去修复几十年前的系统呢!

参考

  1. Our Government Runs on a 60-Year-Old Coding Language, and Now It’s Falling Apart

  2. 百度百科

  3. 抢完口罩呼吸机,美国的州长们开始抢退休程序员了

你可能感兴趣的:(一场疫情,炸出了退休的COBOL程序员)