為什么說機器編程是你要投入其中的下一種技術?
譯文【51CTO.com快譯】一批新興的工具正使用機器學習及其他方法使軟件開發過程的一部分實現自動化。比如說,GitHub上個月推出了這樣一個工具:可以在程序員開發代碼時給出建議。亞馬遜也創建了CodeGuru,這種工具有助于自動查找軟件中的性能瓶頸。Facebook則有Aroma,它也可以提供代碼方面的建議。我自己在英特爾實驗室的團隊則構建了一款工具(目前僅供我們內部使用),可以自動檢測代碼中的錯誤。
這種自動化編程被稱為“機器編程”。它最有趣的功能之一是“代碼語義相似性”,試圖自動確定兩個代碼片段是否表現出相似的特征或實現相似的目標。由于計算領域的進步、可訪問“大代碼數據”(比如IBM/MIT新的CodeNet 項目,包含約1400萬個代碼樣本)以及新的機器學習算法,這在最近成為了可能。
通過利用代碼語義相似性的力量,業界得以開發出自動化系統,幫助CIO們確保開發團隊在軟硬件復雜性增加的情況下仍保持同樣水平的生產力,同時解決軟件開發人才短缺、應對職場倦怠。
支持語言到語言的轉換
代碼語義相似性還可用于編程語言之間進行轉換的工具(即轉譯器)。在過去,將程序的源代碼從一種編程語言轉換成另一種編程語言的軟件系統遙不可及。然而,對于歷來使用更專業的傳統語言進行編程的大型全球組織而言,轉譯方面的最新進展可能意義重大。
想象一下這樣一個世界:無需花費數年時間即可將整個組織的代碼庫從COBOL手動轉換成 Python,機器編程系統可以為您完成所有工作——只需幾天時間。這類系統的雛形早已存在,甚至如今就已用在一些科技公司中,比如Adobe。比如說,據我所知,Adobe Photoshop使用驗證提升(verified lifting),將C/C++轉換成當前版本的Halide。
機器推斷代碼相似性(MISIM)之類的代碼語義相似性系統不僅可以幫助組織更新整個代碼系統,還將擴大人才庫。隨著更多的開發者熟悉這些新語言(比如,從FORTRAN遷移到Python),將組織的代碼庫從當今軟件開發者不太了解的舊式遺留語言更新為現代編程語言將使人員招聘變得更容易。CIO們甚至可能看到編程錯誤減少,因為新時代的語言往往更容易上手,更容易在內部處理大部分系統復雜性。
提升新手開發者,有助于填補開發者空白
代碼語義相似性系統還可以建議代碼。比如說,前面提到的GitHub Co-Pilot旨在了解某個軟件的意圖,然后建議改進(或更完整)的版本以幫助開發者。
如果充分發揮潛力,這類代碼建議系統有望通過為新手開發者和專家開發者提供改進的替代方案,以提高軟件質量和生產力。最終,這將幫助CIO及其IT部門跟上軟件需求,無需雇用額外員工或花錢在新資源上。這些代碼建議系統的最終愿景是提高所有開發者的生產力。
語義相似性系統還可以與開發者協同工作,自動檢測代碼中的錯誤。
結束語
由于軟硬件具有的異構性,軟件開發領域變得日益復雜。預計開發團隊也會越來越快地開發軟件。對于CIO及其監督的軟件開發而言,機器編程可能是唯一經濟上可行的方法。因此,現在正是開始試用新興機器編程工具,了解如何在貴組織中最有效地實施它們的合適時機。
原文標題:Why machine programming should be the next technology you invest in,作者:Justin
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】























