没有一种编程语言像我这么尴尬。
60多年了,我依然支撑着43%的银行系统,处理着每天3万亿美元的交易!
在我的发源地美国,由于信息系统开发得更早,我更是强势,95%的ATM和80%的银行都在用我。
在这个世界上,我依然有2200亿行代码在运行!
这让C++,Java这些后辈看得目瞪口呆。
没错,我就是COBOL。
先让大家看看我的样子吧,这是个简单的Hello World
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
AUTHOR. Liu Xin.
DATE-WRITTEN. 2022-12-15.
PROCEDURE DIVISION.
DISPLAY "Hello, world".
END PROGRAM HELLO.
太简单了,我就不解释了。
这段代码稍微复杂一点,则用来计算小时工的工资,如果工作时间超过40小时,工资是1.5倍。
COMPUTE-GROSS-PAY.
IF HOURS-WORKED > 40 THEN
MULTIPLY PAY-RATE BY 1.5 GIVING OVERTIME-RATE
MOVE 40 TO REGULAR-HOURS
SUBTRACT 40 FROM HOURS-WORKED GIVING OVERTIME-HOURS
MULTIPLY REGULAR-HOURS BY PAY-RATE GIVING REGULAR-PAY
MULTIPLY OVERTIME-HOURS BY OVERTIME-RATE
GIVING OVERTIME-PAY
ADD REGULAR-PAY TO OVERTIME-PAY GIVING GROSS-PAY
ELSE
MULTIPLY HOURS-WORKED BY PAY-RATE GIVING GROSS-PAY
END-IF
读起来是不是特别像普通的英语?
这就是当年美国国防部要求的,要“最大限度地使用简单英语”,“这样更多的人可以使用它来向计算机描述问题。”
我的语法中keyword有400多个,相比C和Python等语言的几十个,有人说这种语法太拖沓,繁琐,受不了。
但也有人很喜欢,说这是一种自解释、自包含的文档,只需要把代码念出来,就知道什么意思了。
我在处理“格式化数据”方面富有盛名,从文件中读取格式化的数据记录(如姓名、地址、社保号码、电话号码等),进行处理(如计算工资),然后保存到文件中,这是我的拿手好戏,所以我出现在了很多银行,保险、政府等重要的商业应用之中。
但悲催的是,能用我编程的程序员已经退休,在家抱孙子,学校也不教COBOL。
COBOL程序员彻底断档了!
由于代码时代久远,又无人能懂,COBOL代码经常被称为屎山代码。
疫情期间,美国失业补助系统用户量暴增,仅仅新泽西州就有32万新用户注册,系统不堪负荷,急需COBOL程序员维护,但就是找不到人。
各地州长在电视上反复呼吁,对外求援。
为了改变这种窘境,人们想了很多招数。
1. 让退休的COBOL程序员发挥余热。
美国的Bill Hinshaw爷爷已经75岁,60年代开始写代码,精通COBOL编程,几年前本来计划退休,但是客户不断地向他求救,于是他成立了一个公司:COBOL Cowboys (COBOL 牛仔),专门为那些绝望的客户提供帮助。
这家公司有20个兼职员工,公司最年轻的员工是50多岁。
这些有经验的COBOL程序员可以修复系统故障,编写手册,磨合新旧系统,时薪可达100美元。
对企业来讲,成本似乎很高,但是和重写相比,还是九牛一毛。
2. 重写代码
还有些银行,下定决心用别的语言把COBOL系统重写。
2012年,澳大利亚联邦银行在埃森哲和SAP的帮助下,更换了其核心COBOL银行平台。
这项工作最终耗时五年,耗资超过 10 亿澳元(7.499 亿美元),期间也遇到了很多问题,2015年支付系统发生故障,60万笔交易丢失。三个月后又发生了一次重大故障,导致客户无法使用银行卡。
2018年,英国TSB银行从基于COBOL的系统迁移,连续几天无法交易,迁移成本高达3.3亿英镑。
任何一个想把我干掉的高管看到这些数字,恐怕心里都会哆嗦一下吧。
用我写的系统是金融、政府和商业世界24/7 运转的重要支柱,迁移它们相当于在空中把飞机的螺旋桨拆下,安装喷气式发动机,这条路恐怕是走不通啊。
3. 人工智能
看到那些银行吃了瘪,大佬IBM坐不住了。
毕竟,大部分的COBOL代码都运行在他家的大型机之上,给大家找一个出路是IBM不容推脱的责任。
今年,IBM想了一招,利用人工智能自动地把COBOL转换成Java。
这个叫做wastonx的辅助工具可以帮助程序员理解、重构COBOL代码,甚至转换成Java代码。
嗯,有点意思。
图片
但我根本不相信,现在的人工智能真的有智能,能完全无误地把我大COBOL代码改成Java。
后来,IBM也承认,这只是个编程助手而已,程序员仍然需要对AI转换的代码进行调整和验证。
调整和验证?也就是说它并不能保证完全的正确性,最多是一个能提高程序员生产力的工具而已。
我放心了。
想想也挺神奇的,人类世界运行在60年前的无人知晓的COBOL代码之上!
随着老一代COBOL程序员的逐渐老去,下一代COBOL程序员在哪里呢?