羅青
數十年來,計算機科學家研究了自動生成代碼的方法,但是現代AI引發了對這種可能性的新興趣。大家都熟知GPT -3之類的程序可以撰寫非常流暢的文本,人們也在尋求更好的工具編寫計算機代碼,巴黎的一家創業公司SourceAI正在對編程工具進行微調,該工具使用人工智能根據對代碼應該做什么的簡短文字描述來編寫代碼。例如,告訴工具“將用戶給定的兩個數字相乘”,它將用Python編寫大約12行代碼來實現這一目的。

機器學習的進步使得自動執行越來越多的編碼任務成為可能,從自動完成代碼段和微調算法到搜索源代碼和查找程前ug。自動編碼可能會改變軟件開發,但是現代AI的局限性和盲點可能會帶來新的問題,機器學習算法的行為可能無法預測,并且除非經過仔細檢查,否則機器生成的代碼產生bug不可避免。
GPT-3是舊金山公司OpenAI于2020年5月發布的功能強大的AI語言程序,專注于在AI方面取得根本進展。SourceAI的創建者是最早使用GPT-3的數百人之一。OpenAI尚未發布GPT-3的代碼,但是它允許某些用戶通過API訪問模擬,SourceAI和其他類似程序都在利用GPI,-3的優勢來發揮更大的空間。
GPT-3是一個龐大的人工神經網絡,它訓練了從網絡上刮取的大量文字。雖然沒有掌握文本的含義,但可以很好地捕獲語言模式,生成有關給定主題的文章。
“在測試該工具時,我們意識到它可以生成代碼。”SourceAI的創始人兼首席執行官富爾坎貝克說。“那時候我們有了開發SourceAI的想法。”
他不是第一個注意到這種潛力的人,GPT-3發布后不久,一位程序員展示了它可以通過重新混合已饋入的代碼片段來創建自定義Web應用程序,包括按鈕、文本輸入字段和顏色,另一家公司Debuild計劃將該技術商業化。
SourceAI旨在讓其用戶以許多不同的語言生成更廣泛的程序,從而幫助自動創建更多軟件。“開發人員可以節省編碼時間,而沒有編碼知識的人也可以開發應用程序。”貝克說。
一些軟件巨頭似乎也對此感興趣。微軟在2019年向openAI投資了10億美元,并已同意許可GPT-3。在5月的軟件巨頭的Build大會上,OpnAI的共同創始人Sam Altman演示了GPT-3如何為開發人員自動完成代碼。微軟拒絕評論如何在其軟件開發工具中使用人工智能。
紐約大學計算機科學與工程系的助理教授布倫丹.多蘭.維特說,像GPT-3這樣的語言模擬很可能會用于幫助人類程序員。但是使用AI生成和分析代碼可能會出現問題,在今年3月份行業發表的一篇論文中,麻省理工學院的研究人員表明,通過進行一些謹慎的更改(例如替換某些變量)創建程序,可以欺騙經過訓練以驗證代碼將安全運行的AI程序。從事這項工作的博士生沙尚克斯利康說,不應過分依賴AI模擬。他說:“這些模擬一旦投入生產,很快就會變得很討厭。”
紐約大學的教授多蘭.加維特說,用于生成編碼工具的語言模擬的性質也帶來了問題。他說:“我認為直接使用語言模擬可能最終會產生錯誤甚至不安全的代碼。…‘畢竟,他們接受過人為編寫的代碼的培訓,而這通常是錯誤的和不安全的。”
多蘭,加維特為此創建了“此代碼不存在”網站,該網站要求訪問者判斷一段代碼是由人類編寫還是由GPT -3的專門版本編寫。他現在正在開發AI生成的代碼,以產生用于測試安全軟件的錯誤。
除了初創公司,大公司Facebook也干過這類研究,他們于2019年4月發布過Aroma的詳細信息,該工具使用機器學習來識別功能相似的代碼片段,可以幫助開發人員更快地編寫程序并避免錯誤。DeepMind的一個團隊在2020年10月展示了一個AI程序,該程序可以設計出人類編寫的算法的更有效版本。英特爾有一個名為“機器推斷的代碼相似性”的項目,該項目使用AI來確定一段代碼的作用,這可以幫助自動構建復雜的程序。
可以判定,機器學習也已經出現,可以自動完成構建和微調其他機器學習算法所需的某些工作。SourceAI工具的實際效果如何尚待觀察,尚無公開演示該技術,但創始人貝克表示,對于簡單的命令,該技術在80%到90%的時間內都有效。他似乎有信心可以改變軟件開發的某些方面,他打趣道:“學生將使用它來快速完成家庭作業。”