可自動生成代碼,5款基于AI的開發工具
如今,對機器學習潛力感興趣的程序員都在討論,如何使用人工智能和基于人工智能的軟件開發工具構建應用程序。例如PyTorch和TensorFlow之類的解決方案。
除此之外,機器學習技術正以另一種有趣的方式影響著編程世界,就是那些采用機器學習算法來簡化開發人員工作的最新軟件開發解決方案。在本文中,我們將重點介紹五個這樣的工具。其中三個已經在面世,而另外兩個仍處于測試階段。如果您想知道如何利用機器學習來更快更有效地進行軟件開發,可以看看這些解決方案。
Kite–面向開發人員的超級機器學習工具
該工具主要充當代碼完成者。借助機器學習,它可以輕松地實時檢測您正在輸入的代碼,并在您鍵入時將其完成。往往被視為開發人員的優秀工具之一,它可與許多流行的代碼編輯解決方案配合使用。
Kite使用從GitHub獲取的工作模型。GitHub代碼(所有人都可以使用)用于創建充當Kite模型主干的摘要。這樣,該工具可以根據上下文和目的而不只是文本本身,去建議甚至自動完成代碼。
Kite剛發布時只能在Mac和Windows上訪問。今天,它也可以在Linux上使用。該工具的缺點是目前僅適用于Python。但是,它也可以與Go一起使用。
兩年前,開源代碼程序員指控Kite處理用戶數據不當,并修改了一個流行的Atom插件來自動完成代碼。不過,Kite團隊此后解決了這兩個問題。最近,Kite團隊宣布該工具現在可以在用戶PC內本地執行所有功能,而不是像以前那樣在云中執行。
Codota
該工具非常類似于Kite,因為它使用機器學習來生成自動完成代碼。它還使用了由衍生自公開代碼的語法樹而形成的類型。但是,它確實與Kite有一些差異。
Codota是針對Kotlin和Java語言構建的。它是基于云的解決方案,可自動生成智能預測。值得注意的是,Codota團隊表示用戶數據未傳輸到他們的服務器,當需要根據范圍和上下文預測代碼時,只傳輸來自編輯文檔的有限的加密信息。
Linux,Windows和Mac設備都支持Codota。但是,編輯器模式僅適用于Android Studio,Eclipse和IntelliJ,當您查看該工具所支持的語言時,就可以理解其中的原因了。除此之外,Codota團隊還提到其他編程語言的版本正在開發中,預計第一個將發布的版本是JavaScript。
該工具有一個免費版本,它僅根據可公開訪問的代碼生成自動建議。但是,付費用戶也可以使用私人代碼。
DeepCode
DeepCode也是當下比較流行的用于軟件開發的機器學習工具。它的主要功能是檢查代碼并突出顯示可能容易受到安全漏洞破壞的部分。與之前的兩個工具非常相似,DeepCode從公共存儲位置評估代碼以識別相似之處。相比之下,該工具還利用模式來查找易受攻擊的區域。
DeepCode實現了一種方法,可以在達到臨界安全級別之前分析用戶輸入處理。因此,當任何數據在沒有安全驗證或清除的情況下從一個點移動到另一個點時,該工具會將其標記為受污染的,并向您發出警告。該工具可以標記的問題包括跨網站腳本、SQL注入威脅、遠程代碼執行以及路徑遍歷攻擊等。
您可以在熱門的存儲庫(例如Bitbucket甚至GitHub)上找到使用DeepCode完成的分析。這些報告是免費的,可用于開源項目或只需少量開發人員的私人作品。您還可以使用DeepCode來分析您的本地代碼托管,但需要付費。
PROSE
這個框架由Microsoft創建,可以使用示例生成代碼。PROSE代表“使用示例進行編程”(Program Synthesis using Examples),并且可以利用它來創建其他編程工具,而不是直接將其用作預測解決方案。開發人員可以使用PROSE的方式包括通過示例進行文本轉換、通過預測進行文件操作以及從文本文件中提取數據。
Pix2code
Pix2code仍處于試驗階段,它是一種創新工具,可以將圖形用戶界面的屏幕截圖轉換為計算機代碼。通過使用深度學習技術,該軟件可以分析三種不同格式的GUI:iOS,Android和HTML / CSS。但是,由于該工具仍處于測試階段,因此只能將其用于學習或用作其他軟件開發的基礎。
使用AI工具進行軟件開發的好處
如我們所見,這些創新工具可以輔助代碼完成、安全措施甚至代碼生成。機器學習提供了巨大的可能性,并且可以快速有效地創建軟件,因此上述工具是值得研究的。當然我們還是得說——如果沒有經驗豐富的軟件開發人員團隊,再好的工具都是無用的。當涉及到節省開發時間時,這些工具是必不可少的,但初始規劃過程和測試、QA以及最終的部署過程,仍需要有經驗的開發人員。