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