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