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