人工智能系統(tǒng)正在變得越來(lái)越聰明,它們不僅能下圍棋、炒股票,現(xiàn)在還學(xué)會(huì)了寫代碼。由微軟和劍橋大學(xué)研究員一同開發(fā)的人工智能系統(tǒng)DeepCoder,完成了人類編程挑戰(zhàn)賽所設(shè)定的基本挑戰(zhàn)。
DeepCoder能從其他程序中“偷”代碼,然后開始寫自己的程序。不過(guò),人類程序員目前還不用擔(dān)心自己的飯碗會(huì)被它給搶走。因?yàn)镈eepCoder的研究團(tuán)隊(duì)稱,他們開發(fā)這個(gè)系統(tǒng)是為了讓沒有任何編碼知識(shí)的人更容易地寫程序。
據(jù)研究團(tuán)隊(duì)透露,DeepCoder使用了深度學(xué)習(xí)技術(shù)來(lái)模擬大腦的神經(jīng)網(wǎng)絡(luò),借此它可以處理大量的數(shù)據(jù),進(jìn)行評(píng)估做出決策。
具體做法是,研究人員給定DeepCoder輸入和輸出列表。這樣DeepCoder可以確定哪些代碼段將帶來(lái)什么樣的所需結(jié)果。DeepCoder開發(fā)者之一馬克·布羅克施密特(Marc Brockschmidt)表示,最終,這種方法有望讓非編程人員只要僅僅描述某個(gè)程序的想法,就可以讓系統(tǒng)自行編寫程序。
人類程序員已經(jīng)非常熟悉如何借鑒其他公開程序的方法,但像DeepCoder這樣的系統(tǒng)可以更快地搜索,并比此前的人工智能系統(tǒng)思考更深。它甚至還可以用人類還沒有想到的方式組合代碼。
“有了這個(gè)程序后,突然之間,人們可以擁有更多的生產(chǎn)力了。真正有望大幅縮短開發(fā)代碼所需要的精力。”麻省理工學(xué)院教授阿曼多·索拉爾·勒扎瑪(Armando Solar-Lezama)在接受《新科學(xué)家》采訪時(shí)說(shuō)。
與人類程序員一行行運(yùn)行代碼,對(duì)整個(gè)程序進(jìn)行試錯(cuò)不同,DeepCoder可以提前預(yù)測(cè)哪些代碼是有用的,哪些是錯(cuò)誤的。另外,它能從各種選擇中學(xué)習(xí),讓自己隨著時(shí)間的增加變得更聰明。
DeepCoder的技術(shù)已經(jīng)得到了應(yīng)用。在2015年,麻省理工學(xué)院的研究人員開發(fā)出了一個(gè)程序,它可以把有故障的代碼行換成其他程序中切實(shí)可用的代碼,自動(dòng)修復(fù)軟件缺陷。布羅克施密特表示,未來(lái)版本會(huì)讓構(gòu)建常規(guī)程序變得容易,比如從網(wǎng)站獲取信息,或者自動(dòng)對(duì)Facebook照片進(jìn)行分類,到時(shí)候,這些都不需要人類程序員動(dòng)手。
不過(guò),廣大程序員們暫時(shí)還可以放寬心,不必?fù)?dān)心他們的工作會(huì)被人工智能取代。索拉爾·勒扎瑪認(rèn)為,DeepCoder只是讓編程工作中最枯燥乏味的部分自動(dòng)化,程序員能夠?qū)r(shí)間專門花在處理比較復(fù)雜的工作上。
最后需要指出的是,DeepCoder目前只能夠解決涉及大約五行代碼的編程挑戰(zhàn)。“一下子生成一大段代碼很難,可能不切實(shí)際。但是真正龐大的代碼卻可以通過(guò)組合大量的小段代碼編寫而成。”索拉爾·勒扎瑪說(shuō)。