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