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