程序員這個(gè)職業(yè)會(huì)消失嗎?OpenAI的大型語(yǔ)言模型GPT-3展現(xiàn)出了由簡(jiǎn)單書(shū)面指令創(chuàng)建HTML網(wǎng)站的能力,震驚了所有人,此后這個(gè)問(wèn)題就一直在計(jì)算機(jī)編程社區(qū)廣受關(guān)注。
那之后的幾個(gè)月里,飛速的發(fā)展使系統(tǒng)能夠根據(jù)自然語(yǔ)言(口頭或書(shū)面人類(lèi)語(yǔ)言)描述來(lái)編寫(xiě)簡(jiǎn)單但完整的計(jì)算機(jī)程序,還可以實(shí)現(xiàn)自動(dòng)化輔助編程,提高計(jì)算機(jī)程序員的工作速度。人工智能(AI)將在多大程度上取代或擴(kuò)展人類(lèi)程序員的工作?
根據(jù)《科技縱覽》咨詢(xún)專(zhuān)家的看法,壞消息是我們當(dāng)今所知道的編程確實(shí)可能會(huì)消失。但好消息是,在可預(yù)見(jiàn)的未來(lái),計(jì)算機(jī)編程和軟件開(kāi)發(fā)仍將是一項(xiàng)需要人來(lái)完成的工作。同時(shí),AI自動(dòng)代碼生成系統(tǒng)將在更短的時(shí)間編寫(xiě)更多的代碼,加快軟件開(kāi)發(fā)速度。
這些專(zhuān)家表示,如果有人想要成為軟件開(kāi)發(fā)者,他們并不一定需要學(xué)習(xí)某種編程語(yǔ)言。雖然向自然語(yǔ)言編程轉(zhuǎn)換的時(shí)限仍然沒(méi)有明確的答案,但預(yù)計(jì)這個(gè)方向在幾年內(nèi)將有重要發(fā)展,而不會(huì)是幾十年。這些未來(lái)的程序員將不需要學(xué)習(xí)C++、Python或Ruby,而是需要理解構(gòu)建計(jì)算機(jī)程序的語(yǔ)義學(xué)、概念和邏輯序列。軟件開(kāi)發(fā)將向更廣泛、更多樣化的人群開(kāi)放。
亞馬遜副總裁、機(jī)器學(xué)習(xí)和AI總經(jīng)理瓦西?菲洛明(Vasi Philomin)說(shuō):“我不認(rèn)為AI會(huì)取代人類(lèi)開(kāi)發(fā)者?!蓖瑫r(shí)他補(bǔ)充道,AI工具會(huì)將程序員從常規(guī)任務(wù)中解放出來(lái),但程序員依然會(huì)保留創(chuàng)造性的計(jì)算機(jī)編程工作。
電子計(jì)算機(jī)的編程始于20世紀(jì)40年代,當(dāng)時(shí)程序員用數(shù)字機(jī)器代碼編寫(xiě)程序。直到1950年代中期,格蕾絲?霍珀(Grace Hopper)和她的團(tuán)隊(duì)在雷明頓?蘭德公司開(kāi)發(fā)出Flow-Matic,借助這種語(yǔ)言,程序員可用受限的英語(yǔ)詞匯來(lái)編寫(xiě)程序。
從那之后,編程就邁上了一個(gè)新臺(tái)階,程序語(yǔ)言的效率越來(lái)越高,程序員的工作效率也在提高。
AI編程是如今的前沿運(yùn)動(dòng),將允許人們?cè)诰帉?xiě)軟件時(shí)完全不用編碼,目前,通過(guò)Akkio等平臺(tái),人們已經(jīng)可以使用簡(jiǎn)單的拖放和按鈕點(diǎn)擊功能來(lái)構(gòu)建機(jī)器學(xué)習(xí)模型。微軟的Power Platform包含了一系列低代碼產(chǎn)品,用戶(hù)只需要通過(guò)描述即可生成簡(jiǎn)單的應(yīng)用程序。
2022年6月,亞馬遜發(fā)布了面向程序員的編碼助手CodeWhisperer,它與GitHub在2021年6月首次發(fā)布的限量預(yù)覽版Copilot類(lèi)似。這兩款工具都以經(jīng)過(guò)大規(guī)模代碼資源庫(kù)訓(xùn)練的大型語(yǔ)言模型(LLM)為基礎(chǔ)。在程序員編寫(xiě)代碼時(shí),程序能夠提供自動(dòng)完成的建議,或根據(jù)簡(jiǎn)單的自然語(yǔ)言短語(yǔ)給出可執(zhí)行指令建議。
不過(guò),要想在自動(dòng)完成的基礎(chǔ)上更進(jìn)一步,還要解決向計(jì)算機(jī)傳授意圖的問(wèn)題。軟件需求本身并不總是精準(zhǔn)的標(biāo)志;眾所周知,自然語(yǔ)言自身也是不精確的。
“要解決英語(yǔ)書(shū)寫(xiě)技術(shù)規(guī)范中的所有歧義,需要越來(lái)越高的精準(zhǔn)度,也需要進(jìn)行人機(jī)對(duì)話(huà)?!盌iffblue的聯(lián)合創(chuàng)始人彼得?施拉梅爾(Peter Schrammel)說(shuō)。Diffblue可自動(dòng)編寫(xiě)Java測(cè)試單元。
最近,為了解決這些問(wèn)題,微軟的研究人員計(jì)劃在基于LLM的代碼生成系統(tǒng)中添加一個(gè)反饋機(jī)制,在生成代碼之前,讓計(jì)算機(jī)詢(xún)問(wèn)程序員,從而澄清歧義。
名為TiCoder的交互式系統(tǒng)則嘗試使用迭代反饋,進(jìn)而推測(cè)程序員的算法意圖,然后生成與表達(dá)意圖一致的代碼。
根據(jù)研究人員的論文,TiCoder采用主要基礎(chǔ)編程問(wèn)題(MBPP)基準(zhǔn)進(jìn)行評(píng)估,能夠?qū)⒆詣?dòng)生成代碼的準(zhǔn)確率從48%提高到85%。MBPP由入門(mén)級(jí)程序員也能解決的Python編程問(wèn)題組成,旨在評(píng)估機(jī)器生成的代碼。
一個(gè)代碼單元可以長(zhǎng)達(dá)幾百行,是程序可獨(dú)立維護(hù)和執(zhí)行的最小部分。一套單元測(cè)試通常包含幾十個(gè)單元測(cè)試,用于檢查單元是否按預(yù)期執(zhí)行;當(dāng)將單元堆疊在一起時(shí),程序就可工作了。
Diffblue的一項(xiàng)調(diào)查表明,開(kāi)發(fā)人員有約35%的時(shí)間用于編寫(xiě)質(zhì)量控制測(cè)試代碼,而不是編寫(xiě)用于生產(chǎn)的代碼,因此實(shí)現(xiàn)這部分工作的自動(dòng)化將顯著提高生產(chǎn)率。
單元測(cè)試適用于調(diào)試單個(gè)功能函數(shù),以及檢測(cè)人工修改代碼的錯(cuò)誤;同時(shí),單元測(cè)試也可作為代碼單元的技術(shù)規(guī)范,用來(lái)指導(dǎo)程序員。不過(guò)真正追求測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的程序員并不多,測(cè)試驅(qū)動(dòng)開(kāi)發(fā)時(shí)要先編寫(xiě)單元測(cè)試,有時(shí)也會(huì)同時(shí)編寫(xiě)單元測(cè)試和代碼單元。
GitHub的Copilot、亞馬遜的CodeWhisperer和AI編程助手包都可以用作編寫(xiě)單元測(cè)試的交互式自動(dòng)完成工具。程序員得到建議后,可以選擇自己認(rèn)為效果最好的一個(gè)。Diffblue的系統(tǒng)名為Diffblue Cover,它使用強(qiáng)化學(xué)習(xí)來(lái)自動(dòng)編寫(xiě)單元測(cè)試,不需要人工干預(yù)。
2022年早些時(shí)候,位于英國(guó)的谷歌人工智能實(shí)驗(yàn)室DeepMind采用AlphaCode在全自動(dòng)代碼生成方面向前邁進(jìn)了一步。AlphaCode是一種能夠根據(jù)自然語(yǔ)言指令編寫(xiě)簡(jiǎn)單計(jì)算機(jī)程序的大型語(yǔ)言模型。
該模型首先經(jīng)過(guò)了GitHub的在線代碼庫(kù)的訓(xùn)練,直到能夠生成看起來(lái)合理的代碼。為了優(yōu)化調(diào)整該模型,DeepMind使用了1.5萬(wàn)對(duì)數(shù)據(jù),每對(duì)數(shù)據(jù)包含自然語(yǔ)言問(wèn)題描述和以往編程競(jìng)賽中的成功代碼方案,創(chuàng)建一個(gè)專(zhuān)用的輸入-輸出樣本數(shù)據(jù)資源庫(kù)。
最后一步是生成多種解決方案,并使用篩選算法選擇最佳方案?!拔覀兺ㄟ^(guò)語(yǔ)言模型進(jìn)行大約100萬(wàn)次取樣,創(chuàng)建了很多不同的程序可能性?!鳖I(lǐng)導(dǎo)DeepMind深度學(xué)習(xí)團(tuán)隊(duì)的奧利奧爾?溫亞爾斯(Oriol Vinyals)說(shuō)。
溫亞爾斯說(shuō),為了優(yōu)化樣本選擇過(guò)程,DeepMind使用一種聚類(lèi)算法將有效的解決方案分組,選出與人類(lèi)程序員編寫(xiě)的解決方案效果一樣的候選方案。
為了測(cè)試該系統(tǒng),DeepMind提交了10個(gè)由AlphaCode編寫(xiě)的程序,參與熱門(mén)平臺(tái)Codeforces上的程序員編程競(jìng)賽,其方案排名前54%。
“要生成一個(gè)程序,只需用自然語(yǔ)言編寫(xiě),不用編寫(xiě)代碼,然后另一端就能得到解決方案?”溫亞爾斯在最近的一次采訪中反問(wèn)道,“我認(rèn)為是這樣。”
溫亞爾斯和其他人提醒道,要實(shí)現(xiàn)該目標(biāo)還需要時(shí)間,可能需要幾十年。“對(duì)于任意一個(gè)復(fù)雜的計(jì)算機(jī)程序,只要向計(jì)算機(jī)提出需求,就能自動(dòng)完成編碼,我們距離這樣的場(chǎng)景還很遙遠(yuǎn)?!盠anding AI的創(chuàng)始人兼首席執(zhí)行官吳恩達(dá)說(shuō),他是AI領(lǐng)域的先驅(qū)人物,也是谷歌大腦的創(chuàng)始人。
不過(guò),考慮到AI代碼生成在短短幾年的發(fā)展速度,AI系統(tǒng)最終能夠根據(jù)自然語(yǔ)言指令編寫(xiě)代碼似乎是不可避免的。手動(dòng)編程軟件開(kāi)發(fā)將越來(lái)越像“手打毛衣”。
要向計(jì)算機(jī)發(fā)出自然語(yǔ)言指令,開(kāi)發(fā)人員仍然需要理解一些邏輯和功能概念以及如何組建程序。即使不學(xué)習(xí)特定的編程語(yǔ)言或編寫(xiě)計(jì)算機(jī)代碼,他們也還是需要學(xué)習(xí)基礎(chǔ)編程。反過(guò)來(lái),這會(huì)讓更廣泛的程序員創(chuàng)造更多、更多樣化的軟件。
“我不認(rèn)為AI會(huì)取代人類(lèi)開(kāi)發(fā)者?!眮嗰R遜的菲洛明說(shuō),“它將把人從不得不做的單調(diào)、樣板式工作中解放出來(lái),使其專(zhuān)注于價(jià)值更高的事情。”
Diffblue的施拉梅爾也贊同AI自動(dòng)代碼生成將讓軟件開(kāi)發(fā)人員專(zhuān)注于更難、更具創(chuàng)意性的任務(wù)。但他補(bǔ)充道,至少還需要進(jìn)行一次交互,讓人確認(rèn)機(jī)器理解了人的意圖。
“軟件開(kāi)發(fā)人員不會(huì)因?yàn)楸蛔詣?dòng)化工具取代而失業(yè)。”他說(shuō),“總是有很多軟件需要編寫(xiě)。”
-
AI
+關(guān)注
關(guān)注
87文章
30172瀏覽量
268432 -
程序員
+關(guān)注
關(guān)注
4文章
950瀏覽量
29763 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8378瀏覽量
132416
原文標(biāo)題:人工智能正在改變編程工作
文章出處:【微信號(hào):CloudBrain-TT,微信公眾號(hào):云腦智庫(kù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論