簡(jiǎn)化軟件開發(fā)的五款機(jī)器學(xué)習(xí)工具
譯文【51CTO.com快譯】使用機(jī)器學(xué)習(xí)的開發(fā)人員開展的討論大多圍繞著創(chuàng)建基于AI的應(yīng)用程序以及用于創(chuàng)建它們的工具:TensorFlow、PyTorch和Scikit-learn等。
但是機(jī)器學(xué)習(xí)還在另一個(gè)方面影響軟件開發(fā):通過新的開發(fā)工具,這種工具使用機(jī)器學(xué)習(xí)技術(shù)使編程更輕松、更高效。本文介紹了五個(gè)項(xiàng)目:三個(gè)商業(yè)項(xiàng)目、兩個(gè)實(shí)驗(yàn)項(xiàng)目,它們讓機(jī)器學(xué)習(xí)在開發(fā)過程中為開發(fā)人員所用。
Kite
Kite是一種代碼完成工具,適用于大多數(shù)主要的代碼編輯器,它使用機(jī)器學(xué)習(xí)技術(shù)在你敲鍵輸入時(shí)填寫代碼。
Kite使用的機(jī)器學(xué)習(xí)模型是以這種方法創(chuàng)建的:拿來GitHub上公開可用的代碼,從中獲得抽象語法樹,將其作為模型的基礎(chǔ)。據(jù)Kite聲稱,這可以從代碼的上下文和意圖(而不僅僅是從文本)獲得自動(dòng)建議和自動(dòng)完成。
眼下,Kite僅面向Python開發(fā)人員,但支持Go的功能正在開發(fā)中。雖然Kite最初只適用于Windows和MacOS用戶,但現(xiàn)在它也支持Linux。
2017年,Kite因處理用戶數(shù)據(jù)不當(dāng)及修改面向Atom的autocomplete-python軟件包而在開源社區(qū)引發(fā)關(guān)注。這家公司已解決了這兩個(gè)問題,聲稱Kite不再將用戶代碼發(fā)回到云服務(wù)器,而是在本地執(zhí)行所有處理,并明確承認(rèn)autocomplete-python軟件包是Kite倡導(dǎo)的軟件包。
Codota
Codota與Kite非常相似。它使用機(jī)器學(xué)習(xí)模型,拿Java和Kotlin代碼來訓(xùn)練,在你鍵入時(shí)為這些語言自動(dòng)完成代碼。與Kite一樣,Codota使用代碼的語法樹,而不僅僅是文本,作為構(gòu)建模型的數(shù)據(jù)。
與改版后的Kite不同,Codota使用基于云的服務(wù)來生成和提供預(yù)測(cè)。然而據(jù)該服務(wù)的文檔顯示,Codota并不將用戶代碼發(fā)送到Codota服務(wù)器,只發(fā)送“來自當(dāng)前編輯的文件的少量上下文信息,以便我們根據(jù)目前的本地范圍進(jìn)行預(yù)測(cè)。”
Codota適用于Windows、MacOS和Linux,但編輯器支持僅限于IntelliJ、Android Studio和Eclipse(Luna或更高版本)。鑒于它專注于Java和Kotlin語言,這有其道理。該公司特別指出,支持其他語言的功能正在開發(fā)中,JavaScript排在第一位。(現(xiàn)在擁有針對(duì)JetBrains JavaScript IDE:WebStorm的測(cè)試版支持。)
免費(fèi)版Codota使用從免費(fèi)獲取的代碼創(chuàng)建的預(yù)測(cè)。企業(yè)版可以使用私有代碼存儲(chǔ)庫來用于訓(xùn)練。
DeepCode
DeepCode可以在AI的指導(dǎo)下自動(dòng)審查代碼,以檢測(cè)潛在的安全漏洞。與Kite和Codota一樣,DeepCode分析公共存儲(chǔ)庫中可用的代碼以查找常見模式。但DeepCode使用那些模式來識(shí)別安全漏洞。
DeepCode專注于“污點(diǎn)分析”(taint analysis),確定用戶輸入在到達(dá)任何安全關(guān)鍵點(diǎn)之前是如何處理的。如果未驗(yàn)證是否可以安全傳送,直接從用戶輸入到SQL查詢的數(shù)據(jù)被視為“污點(diǎn)”,引發(fā)警報(bào)。
DeepCode聲稱可以標(biāo)記的嚴(yán)重錯(cuò)誤包括Web應(yīng)用程序中常見的安全問題:跨站腳本、SQL注入攻擊、遠(yuǎn)程代碼執(zhí)行和路徑遍歷攻擊。
DeepCode的分析適用于GitHub和Bitbucket存儲(chǔ)庫,對(duì)于開源項(xiàng)目或至多30名開發(fā)人員的私有項(xiàng)目而言,它們不需要任何費(fèi)用。DeepCode還可用于掃描本地代碼托管(比如GitHub Enterprise),可索取價(jià)目表。
微軟PROSE
PROSE的全稱是“使用示例進(jìn)行程序合成”。微軟的這個(gè)項(xiàng)目是用于從示例輸入和輸出生成代碼的SDK。因此,PROSE這個(gè)工具包可用于構(gòu)建預(yù)測(cè)編碼工具,而它本身不是預(yù)測(cè)編碼工具。
潛在的PROSE應(yīng)用領(lǐng)域包括通過示例轉(zhuǎn)換文本(其中一個(gè)實(shí)現(xiàn)是微軟在Excel中的“Flash Fill”功能)、從文本文件中提取數(shù)據(jù)(比如日志分析)以及預(yù)測(cè)文件操作(比如通過示例將文本拆分成多列)。
鏈接:https://microsoft.github.io/prose/
Pix2code
Pix2code的理念聽起來像科幻小說。為Pix2code提供圖形用戶界面的屏幕截圖,它會(huì)生成呈現(xiàn)該GUI的代碼。Pix2code使用深度學(xué)習(xí)模型,使用軟件隨附的數(shù)據(jù)集進(jìn)行訓(xùn)練,以生成Android XML、iOS Storyboard和HTML/CSS等格式的GUI。Pix2code是一個(gè)實(shí)驗(yàn)研究項(xiàng)目(“僅供教育用途共享”),因此用它完成的任何工作都需要使用該項(xiàng)目作為進(jìn)一步開發(fā)的基礎(chǔ)。
鏈接:https://github.com/tonybeltramelli/pix2code
原文標(biāo)題:5 machine learning tools to ease software development,作者:Serdar Yegulalp
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】