天天看點

COBOL老矣,尚能飯否?近80%企業計劃徹底淘汰那些古早程式設計語言

選自IEEE Spectrum

機器之心編譯

編輯:蛋醬

75% 到 80% 的公司都希望擺脫 COBOL,原因是跟不上機器學習或雲內建等新的發展。

最近,大型資料分析和風險評估跨國公司 Verisk 的軟體工程進階副總裁 Sid Mohanram 正在負責公司系統從 COBOL 程式設計語言中遷移出來。

Verisk 隻是衆多這樣做的公司的其中一個。現在,公司們和政府正在探索除了運作世界上一些最關鍵應用程式的程式設計語言之外的其他選擇。

「我們的目标是擺脫大型機。」Mohanram 說道。

新冠疫情的蔓延為使用 60 年曆史的古早程式設計語言 COBOL 編寫核心計算機系統的機構們敲響了警鐘,在美國,紐澤西州、威斯康星州、佛蒙特州、愛荷華州、堪薩斯州,甚至聯邦政府都面臨着COBOL 程式員短缺的問題,一些系統無法在申請失業救濟金系統出現曆史性飙升的情況下維持良好運作。

但是,COBOL 程式員的短缺并不是唯一的問題。在程式設計語言和軟體開發的高速世界中,COBOL 已經成為一個陳舊的(盡管仍然相當可靠)的機器。

「我們在 COBOL 中實施更改的速度很慢,人們開始尋找變通辦法,」Mohanram 說,這造成了所謂「技術債務」的積累。

「開發人員說:我需要進行更改,但我太忙了,無法進行 COBOL 更改,是以我不會觸及現有的 COBOL 程式,但我會在 COBOL 之外再添加三個步驟,包括 Excel 電子表格或其他東西來應用更改。是以就有了現在這些非常過時的 COBOL 程式,以及一堆其他的東西作為獲得最終結果的變通方法。」

COBOL老矣,尚能飯否?近80%企業計劃徹底淘汰那些古早程式設計語言

仍然有這麼多程式使用 COBOL 的原因之一是它出奇地穩定。但如今,對于許多應用程式而言,靈活性更為重要。

「COBOL 代碼是防攻擊的,因為它幾乎從不改變,」Diffblue 的首席執行官 Mathew Lodge 說,這是一家為 Java 和其他更新的程式設計語言自動編寫單元測試的初創公司。「但那是舊世界了,現狀則完全相反——你必須時刻改變以保持競争力。」

IBM 的大型機運作着世界上大部分的 COBOL 代碼,擁有一個緻力于推進該技術的整個團隊,是以客戶可以繼續使用該語言。Z 是 IBM 最先進的大型計算機的品牌名稱,IBM 負責 Z 産品管理的副總裁 Barry Baker 說:「我們一直在這方面投資,哪怕僅是為了尋找從業人員,或是在工具功能和産品上幫助他們真正直覺地了解跨應用程式的資料流。」

Baker 說,用 COBOL 建構的應用程式通常沒有很好的文檔記錄,有時甚至會丢失原始源代碼的整個子產品。與此同時,設計這些應用程式的人已經退休,有時甚至已經去世。此外,測試 COBOL 程式也可能是一個問題,因為許多 COBOL 程式是在單元測試普及之前的時代編寫的。

COBOL老矣,尚能飯否?近80%企業計劃徹底淘汰那些古早程式設計語言

「當測試與代碼同時編寫時,測試是最有效的,」Mohanram 說。他補充說,現在最佳實踐是先編寫單元測試,因為單元測試描述了需求,然後編寫實際函數以獲得給定輸入集的預期輸出。「單元測試将迫使開發人員編寫更容易測試的代碼。」

然而,IBM 的 Baker 表示,單元測試實際上已經為開發人員提供了相當長的一段時間。「大約 20 年前,當我還是一名開發人員時,我在自己的 IBM Z 開發中使用了測試驅動開發。」

SoftwareMining 的創始人 Cyrus Montakab 說,測試可能比翻譯更昂貴、更困難,Verisk 正在使用它的工具将 COBOL 代碼翻譯成現代程式設計語言。「我們一直告訴人們,現在開始翻譯,這樣你就可以在最後一個 COBOL 程式員離開之前對其進行測試。」

目前,也有 AI 工具可以支援自動編寫單元測試,這可以加快流程并節省資金,比如 Lodge 的 Diffblue 使用強化學習來自動編寫單元測試。

「如果想在現代軟體流程中使用該代碼,你不僅需要翻譯代碼,還必須提出一組單元測試來快速發現錯誤,」Lodge 說,他的公司正在幫助大型養老基金用 Java 重寫 COBOL 程式。使用自動化測試可以確定代碼品質,同時跟上市場的需求。

路透社預估,2015 年仍有 2200 億行 COBOL 代碼仍在生産中,運作着全球 43% 的銀行系統和 95% 的 ATM,包括紅綠燈、航空公司、養老基金和工資系統都定期在 COBOL 上運作。

許多公司不願意觸碰更大的 COBOL 應用程式,隻要它還能工作。「總是一再推遲,老 IT 主管說這不歸自己管,」幫助企業替換 COBOL 的公司 Astadia 的首席技術官 Walter Sweat 說。「他們不想冒險并将這件事推給下一代,但到了某個階段,必須有人處理它。」

Sweat 說,他認為退出 COBOL 是一種增長趨勢。兩年前,他采訪過的潛在客戶中隻有一半希望将他們的系統遷移到不同的程式設計語言。現在, 75% 到 80% 已經希望擺脫 COBOL。這是因為 COBOL 程式跟不上機器學習或雲內建等新的發展。

對于許多傳統銀行來說,随着移動金融應用程式的爆炸式增長,這種程式設計語言可能會迎接未來的挑戰,這些應用程式允許消費者在手機上完成從基本銀行業務到商品交易的所有事情。然而,整個行業創紀錄的利潤說明了一個不同的故事,這表明這些傳統銀行已經能夠建立自己的移動應用程式,這些應用程式由運作在 COBOL 中的服務和資料支援。

Baker 表示,IBM 認為企業中使用的 COBOL 不太可能很快消失,但将關鍵應用程式翻譯成更靈活的語言比以往變得都容易。

參考連結:https://spectrum.ieee.org/cobol-programming-shelf-life

繼續閱讀