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