AI從其他程式偷程式碼,來編寫自己的程式

ADVERTISEMENT

人類快走開,放著讓我來。機器學習系統已經學會了自己程式設計!

由微軟和劍橋大學研發的系統DeepCoder已經能夠解決類似程式設計比賽中出現的基礎程式設計問題。這樣一來就方便多了,人類無需熟知程式碼也可以完成簡單的程式。

麻省理工學院的Armando Solar-Lezama(並非開發者)說道:“一瞬間,人們的生產效率會直線上升,他們可以搭建出以前無法搭建的系統。”

“最終,依靠這種技術,非程式設計人員隻要向程式描述一個想法然後讓系統自己去搭建”,英國劍橋大學微軟研究院DeepCoder開發者之一Marc Brockschmidt說道。

DeepCoder用到的技術叫做程式合成:從現存的軟體那兒偷學程式碼然後把它們拚接成新程式碼——跟程式員做的事兒一樣。給每段程式碼一列輸入和輸出值,DeepCoder就會懂得需要哪些程式碼片段來獲得指定的結果。

ADVERTISEMENT

讓人工智慧在這上面自由發揮的優勢在於它比人類程式員的程式搜尋範圍更廣泛更徹底,所以最終AI有可能拚接出人類根本沒設想過的原始碼。此外,DeepCoder還利用機器學習窮盡原始碼資料庫,並根據潛在的實用價值將程式碼片段進行排序。

這些改良使系統比它的前輩們動作快多了。DeepCoder能在幾分之一秒內編寫出能夠正常執行的程式,而舊版系統要花上幾分鐘去測試怎麼組合不同的程式碼片段才能工作。因為DeepCoder在執行任務中會學習什麼樣的原始碼組合能工作以及什麼樣的不能工作,所以每次著手解決一個新問題它就會進步一點點。

這種新科技將會有廣泛的應用。2015年,MIT研究員開發了一種能夠自動修復軟體漏洞的程式,它通過複製其他程式中正確的程式碼來替換原程式中的錯誤程式碼。Brockschmidt說,未來的DeepCoder會使編寫例行程式非常簡單,比如網頁爬蟲、自動分類Facebook照片等等,人類程式員連手指都不用擡一下。

ADVERTISEMENT

Solar-Lezama說:“這種科技為自動化帶來的潛力在於大大減少了開發程式碼所需的時間精力。”

但他不覺得這種科技會讓程式員失業。他說,通過用程式合成技術來自動化那些程式設計工作中最枯燥乏味的部分,程式員可以把時間花在更復雜的任務上。

目前,DeepCoder還只能解決5行程式碼左右的程式設計任務。但隻要選對了程式語言,有時候短短幾行程式碼就能解決相當複雜的問題。

Solar-Lezama說:“一次性生成很長的一段程式碼很難,基本不現實。但是長程式碼段都是由小程式碼片段接起來的。”


» DeepTech深科技

ADVERTISEMENT
ADVERTISEMENT