人工智能可以解決華爾街的“意大利面條式代碼”危機(jī)嗎,?
在陳舊的代碼崩潰,并且導(dǎo)致數(shù)十億美元的損失之前,,IBM 和微軟等科技巨頭希望人工智能可以將陳舊的代碼翻譯成更現(xiàn)代的編程語(yǔ)言,。

插圖來源:CHRIS GASH
世界上沒有多少企業(yè)是以磁帶或者軟盤為基礎(chǔ)建立起來的,,因此缺乏能夠修復(fù)這些已經(jīng)有幾十年歷史的技術(shù)的專家并不構(gòu)成問題,。但Cobol語(yǔ)言卻打破了這一規(guī)則——華爾街(Wall Street)和美國(guó)聯(lián)邦政府每年都需要依靠該語(yǔ)言來處理價(jià)值數(shù)萬(wàn)億美元的交易,而Cobol語(yǔ)言是一種已經(jīng)有64年歷史的編程語(yǔ)言,。隨著Cobol語(yǔ)言的不斷老化,這些大型機(jī)構(gòu)已經(jīng)很難找到能夠更新其古老系統(tǒng)的人員,。
一旦出現(xiàn)問題,,許多公司就會(huì)求助于82歲的、綽號(hào)為“Cobol牛仔”(Cobol Cowboy)的比爾·欣肖(Bill Hinshaw),。欣肖在他位于美國(guó)得克薩斯州北部的家庭辦公室工作,,在那里他負(fù)責(zé)管理一個(gè)由大約600名年邁的Cobol語(yǔ)言工程師組成的遠(yuǎn)程團(tuán)隊(duì)——其中一些人在20世紀(jì)六七十年代就開始做程序員。每周,,這些牛仔們都會(huì)提供應(yīng)急響應(yīng)服務(wù),,包括在2021年為來自美國(guó)艾奧瓦州的一家已經(jīng)有93年歷史的公司Superior Welding Supply提供應(yīng)急響應(yīng)服務(wù),這家公司唯一的Cobol語(yǔ)言專家在公司的軟件崩潰前去世了,。
各類公司都在努力解決維護(hù)陳舊代碼(通常是Cobol代碼)的問題,,這些代碼仍然可以運(yùn)行,但通常文檔不全,,難以修改,,這是程序員稱之為“意大利面條式代碼”(spaghetti code)普遍問題的一部分。多年來,,政府機(jī)構(gòu),、媒體和大型銀行一直在為技術(shù)基礎(chǔ)設(shè)施的老化敲響警鐘。現(xiàn)在,,IBM和微軟(Microsoft)等科技巨頭認(rèn)為,,它們可能已經(jīng)找到了讓我們擺脫對(duì)艾森豪威爾(Eisenhower)時(shí)代的技術(shù)的依賴的強(qiáng)大工具:生成式人工智能。
?
“意大利面條式代碼”
當(dāng)我們把錢從儲(chǔ)蓄賬戶轉(zhuǎn)到支票賬戶時(shí),,我們不會(huì)看見Cobol語(yǔ)言,,也不會(huì)想到它,但它對(duì)銀行的日常運(yùn)營(yíng)卻至關(guān)重要。這些操作還包括把客戶添加到數(shù)據(jù)庫(kù),、實(shí)現(xiàn)ATM交易和處理工資單,。自1973年以來,美國(guó)聯(lián)邦政府一直使用同一系統(tǒng)處理學(xué)生助學(xué)金申請(qǐng),,該系統(tǒng)由大約100萬(wàn)行Cobol代碼組成,。
據(jù)信息技術(shù)公司Open-Text稱,目前依舊在使用的Cobol代碼大約有2,200億行到8,000億行,。埃森哲(Accenture)的全球銀行業(yè)務(wù)主管邁克爾·阿博特(Michael Abbott)說:“當(dāng)你深入研究絕大多數(shù)的大型銀行真正的核心銀行體系時(shí),,你就會(huì)發(fā)現(xiàn),這些銀行都在使用Cobol代碼,?!?/p>
實(shí)際上,在1959年程序員設(shè)計(jì)出Cobol語(yǔ)言之后,,它就迅速成為了數(shù)據(jù)處理語(yǔ)言,,這意味著銀行、保險(xiǎn)公司,、政府機(jī)構(gòu)和任何其他處理TB級(jí)信息的公司都要編寫和維護(hù)數(shù)百萬(wàn)行Cobol代碼,。
然而,傳統(tǒng)的Cobol語(yǔ)言在效率和通用性方面都比不上20世紀(jì)70年代及之后出現(xiàn)的C語(yǔ)言,、Java和Python等新興語(yǔ)言,。這些語(yǔ)言的構(gòu)建方式不同,允許工程師更好地構(gòu)建和重用以前編寫的代碼,。最終,,新創(chuàng)企業(yè)和位于硅谷(Silicon Valley)的公司開始使用Java或者Python,而不是Cobol語(yǔ)言,。
隨著Cobol語(yǔ)言失寵,,維護(hù)成本也隨之飆升。此外,,由于遺留的Cobol代碼往往文檔不全,,因此修復(fù)和升級(jí)需要更長(zhǎng)的時(shí)間。在快節(jié)奏的經(jīng)濟(jì)環(huán)境中(例如,,利率變化迫使銀行迅速更新提供給客戶的產(chǎn)品),,重大改革可能并不可行。
阿博特稱:“這些企業(yè)和機(jī)構(gòu)可能需要9個(gè)月到12個(gè)月的時(shí)間來解開意大利面條式代碼難題并更新其中的產(chǎn)品,,從而推出新產(chǎn)品,。在現(xiàn)代架構(gòu)中,這能夠在幾周內(nèi)完成,?!?/p>
與此同時(shí),升級(jí)的成本可能高達(dá)數(shù)億美元。當(dāng)澳大利亞聯(lián)邦銀行(Commonwealth Bank of Australia)在2017年完成其核心銀行系統(tǒng)的更換時(shí),,整個(gè)過程耗時(shí)五年,,耗資近7.5億美元。而且,,如果操作不當(dāng),,升級(jí)可能就會(huì)導(dǎo)致災(zāi)難。2022年,,英國(guó)金融監(jiān)管機(jī)構(gòu)對(duì)英國(guó)信托儲(chǔ)蓄銀行(TSB)處以6,000多萬(wàn)美元的罰款,,原因是該銀行未能成功地遷移到新信息技術(shù)平臺(tái)。此前,,數(shù)千名客戶于數(shù)周內(nèi)無(wú)法進(jìn)行在線支付,。
?
代碼助手
最近的一個(gè)下午,IBM研究中心(IBM Research)的首席科學(xué)家魯奇爾·普里(Ruchir Puri)在公司位于紐約市北部綠樹成蔭的園區(qū)里跳到了一塊白板前,。這位留著大胡子,、頭戴棒球帽、身穿白色西服襯衫的高管,,用兩只馬克筆勾勒出金融機(jī)構(gòu)如何使用watsonx代碼助手將數(shù)百萬(wàn)行Cobol代碼翻譯成Java,。
是的,普里表示,,代碼轉(zhuǎn)譯器或者翻譯器已經(jīng)存在了幾十年,,但是這些陳舊的系統(tǒng)把意大利面條式Cobol語(yǔ)言翻譯成意大利面條式Java語(yǔ)言,。換句話說,,記錄不全、難以理解的傳統(tǒng)語(yǔ)言變成了記錄不全,、難以理解的現(xiàn)代語(yǔ)言,。
他指出,IBM的解決方案超越了現(xiàn)有的轉(zhuǎn)譯器,。通過生成式人工智能,,或者與OpenAI的ChatGPT相同的技術(shù),IBM可以將文檔不全的Cobol代碼轉(zhuǎn)換為結(jié)構(gòu)化,、易于解析的Java代碼,。普里稱,IBM的工具能夠把公司代碼庫(kù)實(shí)現(xiàn)現(xiàn)代化的速度提高10倍,。
這將為華爾街和美國(guó)政府節(jié)省了數(shù)十億美元,。比如,2018年2月,,美國(guó)空軍(Air Force)完成了負(fù)責(zé)管理作戰(zhàn)任務(wù)的物資和設(shè)備的計(jì)算系統(tǒng)的現(xiàn)代化改造,。根據(jù)2019年的一份報(bào)告,這一為期三年的過程,包括把數(shù)百萬(wàn)行Cobol代碼翻譯成Java代碼,,每年為美國(guó)政府節(jié)省了2,500萬(wàn)美元的計(jì)算成本,。那么,試想一下,,如果生成式人工智能將美國(guó)空軍的系統(tǒng)實(shí)現(xiàn)現(xiàn)代化所需要的三年時(shí)間縮短為幾個(gè)月,,納稅人就可以節(jié)省多少錢。
不出所料,,這為IBM帶來了重大商機(jī),。普里指出,大公司都爭(zhēng)相使用其翻譯軟件(將Cobol語(yǔ)言翻譯為Java語(yǔ)言),。他說:“大多數(shù)《財(cái)富》美國(guó)100強(qiáng)的企業(yè)都是我們的客戶,,而且所有這些企業(yè)目前都在使用我們的軟件?!?/p>
對(duì)于微軟旗下的開發(fā)者軟件平臺(tái)GitHub的首席執(zhí)行官托馬斯·多姆克(Thomas Dohmke)來說,,Cobol語(yǔ)言也是首要考慮因素?!癈obol仍舊在大型機(jī)上運(yùn)行,,這是一個(gè)比我們想象的要大得多的社會(huì)問題?!彼罱赬上發(fā)帖說道,。多姆克表示,他在過去的一年里聽到的關(guān)于Cobol語(yǔ)言的問題比他過去30年聽到的還要多,。
就像向IBM尋求幫助一樣,,客戶們也在向GitHub尋求幫助,看看它的生成式人工智能助手GitHub Copilot如何幫助他們實(shí)現(xiàn)傳統(tǒng)基礎(chǔ)架構(gòu)的現(xiàn)代化,。
Copilot采用與ChatGPT相同的算法,,類似于電子郵件的自動(dòng)補(bǔ)全功能。當(dāng)程序員鍵入代碼時(shí),,Copilot會(huì)以GitHub公共項(xiàng)目中所有的編程語(yǔ)言為語(yǔ)料進(jìn)行訓(xùn)練,,并提出行編輯建議。多姆克補(bǔ)充道,,程序員還能夠使用該工具突出顯示Cobol代碼,,并要求Copilot解釋這些代碼的實(shí)際作用。就像IBM自己的編碼助手一樣,,Copilot也可以把Cobol代碼翻譯成Java或者其他編程語(yǔ)言,。
他說:“生成式人工智能和Copilot將使我們?cè)诰S護(hù)這些陳舊代碼庫(kù)時(shí)更加輕松,并最終實(shí)現(xiàn)現(xiàn)代化,?!?/p>
?
退休
人工智能炒作已經(jīng)達(dá)到了高潮,,甚至Cobol牛仔欣肖也在為一家新創(chuàng)企業(yè)的人工智能和Cobol產(chǎn)品提供建議。欣肖在他位于美國(guó)得克薩斯州的辦公室門上掛著一頂皮帽,,但他并不擔(dān)心人工智能會(huì)迫使他退休,。“在凌晨三點(diǎn),,你可能會(huì)接到一個(gè)電話,,說這個(gè)程序崩潰了?!毙佬ふf道,,“你如何讓人工智能參與其中,從而在一個(gè)小時(shí)內(nèi)讓它恢復(fù)正常運(yùn)行呢,?”
IBM和GitHub的高管們也煞費(fèi)苦心地表示,,人類應(yīng)該參與代碼翻譯和實(shí)現(xiàn)現(xiàn)代化的每一步。兩人都承認(rèn),,人工智能生成的代碼并不完美,,因此應(yīng)該像人類生成的代碼一樣,經(jīng)過一系列的測(cè)試,。例如,,斯坦福大學(xué)(Stanford University)的研究人員發(fā)現(xiàn),不使用OpenAI編碼助手的開發(fā)人員編寫的代碼往往比使用該助手的開發(fā)人員編寫的代碼更加安全,。
但是,,盡管存在風(fēng)險(xiǎn),像埃森哲的阿博特這樣的金融行業(yè)從業(yè)者還是希望,,像IBM或者GitHub這樣的產(chǎn)品能夠解開經(jīng)常使大銀行陷入困境的意大利面條式代碼難題,。他在談到生成式人工智能時(shí)說:“我要告訴大家,我認(rèn)為它大有可為,?!?/p>
*****
技術(shù)老化的基石
許多企業(yè)和美國(guó)聯(lián)邦政府依然在使用這些20世紀(jì)的編碼語(yǔ)言,,而且運(yùn)行良好,。
?
1957年 Fortran語(yǔ)言
約翰·巴克斯(John Backus)帶領(lǐng)IBM的一個(gè)團(tuán)隊(duì)創(chuàng)建了公式翻譯(Formula Translation,或稱Fortran),,這是最早把自然語(yǔ)言(比如“if語(yǔ)句”,、“讀”、“寫”)納入其語(yǔ)法的編程語(yǔ)言之一,。
?
1959年 Cobol語(yǔ)言
實(shí)際上,,包括著名程序員格蕾絲·霍珀(Grace Hopper)在內(nèi)的一批計(jì)算機(jī)科學(xué)家推動(dòng)了面向商業(yè)的通用語(yǔ)言(Common Business-Oriented Language,或稱Cobol)的開發(fā),,該語(yǔ)言成為了實(shí)際上的數(shù)據(jù)處理語(yǔ)言,。
?
1972年至1973年 C語(yǔ)言
丹尼斯·里奇(Dennis Ritchie)在貝爾實(shí)驗(yàn)室(Bell Labs)開發(fā)出了C語(yǔ)言,,該語(yǔ)言至今仍然是最流行的五種編程語(yǔ)言之一。
?
1983年 Ada語(yǔ)言
法國(guó)程序員讓·大衛(wèi)·伊克比亞(Jean David Ichbiah)和他的團(tuán)隊(duì)設(shè)計(jì)出了Ada語(yǔ)言,,該語(yǔ)言在20世紀(jì)90年代曾經(jīng)一度成為美國(guó)國(guó)防部(Department of Defense)的首選編程語(yǔ)言,。
?
1987年 Perl語(yǔ)言
美國(guó)程序員和語(yǔ)言學(xué)家拉里·沃爾(Larry Wall)發(fā)布了Perl語(yǔ)言,在Python取代它之前,,Perl語(yǔ)言在21世紀(jì)初掀起了一陣小高潮,。
?
譯者:Zhy