我們的世界,運(yùn)行在無人能懂的“屎山代碼”之上!
沒有一種編程語言像我這么尷尬。
60多年了,我依然支撐著43%的銀行系統(tǒng),處理著每天3萬億美元的交易!
在我的發(fā)源地美國(guó),由于信息系統(tǒng)開發(fā)得更早,我更是強(qiáng)勢(shì),95%的ATM和80%的銀行都在用我。
在這個(gè)世界上,我依然有2200億行代碼在運(yùn)行!
這讓C++,Java這些后輩看得目瞪口呆。
沒錯(cuò),我就是COBOL。
先讓大家看看我的樣子吧,這是個(gè)簡(jiǎn)單的Hello World
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
AUTHOR. Liu Xin.
DATE-WRITTEN. 2022-12-15.
PROCEDURE DIVISION.
DISPLAY "Hello, world".
END PROGRAM HELLO.
太簡(jiǎn)單了,我就不解釋了。
這段代碼稍微復(fù)雜一點(diǎn),則用來計(jì)算小時(shí)工的工資,如果工作時(shí)間超過40小時(shí),工資是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
讀起來是不是特別像普通的英語?
這就是當(dāng)年美國(guó)國(guó)防部要求的,要“最大限度地使用簡(jiǎn)單英語”,“這樣更多的人可以使用它來向計(jì)算機(jī)描述問題?!?/p>
我的語法中keyword有400多個(gè),相比C和Python等語言的幾十個(gè),有人說這種語法太拖沓,繁瑣,受不了。
但也有人很喜歡,說這是一種自解釋、自包含的文檔,只需要把代碼念出來,就知道什么意思了。
我在處理“格式化數(shù)據(jù)”方面富有盛名,從文件中讀取格式化的數(shù)據(jù)記錄(如姓名、地址、社保號(hào)碼、電話號(hào)碼等),進(jìn)行處理(如計(jì)算工資),然后保存到文件中,這是我的拿手好戲,所以我出現(xiàn)在了很多銀行,保險(xiǎn)、政府等重要的商業(yè)應(yīng)用之中。
但悲催的是,能用我編程的程序員已經(jīng)退休,在家抱孫子,學(xué)校也不教COBOL。
COBOL程序員徹底斷檔了!
由于代碼時(shí)代久遠(yuǎn),又無人能懂,COBOL代碼經(jīng)常被稱為屎山代碼。
疫情期間,美國(guó)失業(yè)補(bǔ)助系統(tǒng)用戶量暴增,僅僅新澤西州就有32萬新用戶注冊(cè),系統(tǒng)不堪負(fù)荷,急需COBOL程序員維護(hù),但就是找不到人。
各地州長(zhǎng)在電視上反復(fù)呼吁,對(duì)外求援。
為了改變這種窘境,人們想了很多招數(shù)。
1. 讓退休的COBOL程序員發(fā)揮余熱。
美國(guó)的Bill Hinshaw爺爺已經(jīng)75歲,60年代開始寫代碼,精通COBOL編程,幾年前本來計(jì)劃退休,但是客戶不斷地向他求救,于是他成立了一個(gè)公司:COBOL Cowboys (COBOL 牛仔),專門為那些絕望的客戶提供幫助。
這家公司有20個(gè)兼職員工,公司最年輕的員工是50多歲。
這些有經(jīng)驗(yàn)的COBOL程序員可以修復(fù)系統(tǒng)故障,編寫手冊(cè),磨合新舊系統(tǒng),時(shí)薪可達(dá)100美元。
對(duì)企業(yè)來講,成本似乎很高,但是和重寫相比,還是九牛一毛。
2. 重寫代碼
還有些銀行,下定決心用別的語言把COBOL系統(tǒng)重寫。
2012年,澳大利亞聯(lián)邦銀行在埃森哲和SAP的幫助下,更換了其核心COBOL銀行平臺(tái)。
這項(xiàng)工作最終耗時(shí)五年,耗資超過 10 億澳元(7.499 億美元),期間也遇到了很多問題,2015年支付系統(tǒng)發(fā)生故障,60萬筆交易丟失。三個(gè)月后又發(fā)生了一次重大故障,導(dǎo)致客戶無法使用銀行卡。
2018年,英國(guó)TSB銀行從基于COBOL的系統(tǒng)遷移,連續(xù)幾天無法交易,遷移成本高達(dá)3.3億英鎊。
任何一個(gè)想把我干掉的高管看到這些數(shù)字,恐怕心里都會(huì)哆嗦一下吧。
用我寫的系統(tǒng)是金融、政府和商業(yè)世界24/7 運(yùn)轉(zhuǎn)的重要支柱,遷移它們相當(dāng)于在空中把飛機(jī)的螺旋槳拆下,安裝噴氣式發(fā)動(dòng)機(jī),這條路恐怕是走不通啊。
3. 人工智能
看到那些銀行吃了癟,大佬IBM坐不住了。
畢竟,大部分的COBOL代碼都運(yùn)行在他家的大型機(jī)之上,給大家找一個(gè)出路是IBM不容推脫的責(zé)任。
今年,IBM想了一招,利用人工智能自動(dòng)地把COBOL轉(zhuǎn)換成Java。
這個(gè)叫做wastonx的輔助工具可以幫助程序員理解、重構(gòu)COBOL代碼,甚至轉(zhuǎn)換成Java代碼。
嗯,有點(diǎn)意思。
圖片
但我根本不相信,現(xiàn)在的人工智能真的有智能,能完全無誤地把我大COBOL代碼改成Java。
后來,IBM也承認(rèn),這只是個(gè)編程助手而已,程序員仍然需要對(duì)AI轉(zhuǎn)換的代碼進(jìn)行調(diào)整和驗(yàn)證。
調(diào)整和驗(yàn)證?也就是說它并不能保證完全的正確性,最多是一個(gè)能提高程序員生產(chǎn)力的工具而已。
我放心了。
想想也挺神奇的,人類世界運(yùn)行在60年前的無人知曉的COBOL代碼之上!
隨著老一代COBOL程序員的逐漸老去,下一代COBOL程序員在哪里呢?