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