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