令軟件開發人員夜不能寐的事情比比皆是。如今,他們最關心的問題不再是如何用自己喜歡的語言(C、C++、Erlang、Java 等)表達最新的算法,而是人工智能(AI)。
本文中,我們將介紹AI編寫代碼的過程,并回答這個問題:AI會取代程序員嗎?
什么是AI代碼生成?
近年來,生成式AI的應用呈爆炸式增長,這主要因為現在有足夠的計算能力來運行深度學習算法,而且訓練機器學習模型所需的海量數據也在增加。
AI代碼生成是指使用生成式AI和機器學習編寫計算機代碼的過程。
生成式AI編碼工具正在改變軟件開發過程,但這種進步也帶來了不確定性。通過AI編寫代碼,對軟件開發人員到底意味著什么?
AI編寫代碼的未來
生成式AI的潛力已初露端倪。AI正在改變各行各業,并有望加速創新。OpenAI最近進行的一項研究估計,生成式AI工具可能會影響47%的任務,從而大大加快軟件開發的過程。
在埃文斯數據公司(Evans Data Corp)進行的一項調查中,550名軟件開發人員被問及他們職業生涯中最擔心的問題。其中,29%的人擔心:“我和我的開發工作被AI所取代”。
美國能源部橡樹嶺國家實驗室(U.S. Department of Energy's Oak Ridge National Laboratory)的一個研究小組對此表示贊同。到2040年,機器學習和自然語言處理技術將非常先進,能夠編寫更好的軟件代碼,而且它們會比最好的人類開發人員寫得更快。
牛津大學的“未來就業”(The Future of Employment)研究警告說,隨著機器學習的發展,軟件工程師可能會變得計算機化,軟件設計選擇將通過算法進行優化。
軟件開發,特別是在安全關鍵型行業,需要確保高質量的代碼,以滿足功能要求。
因此,如果AI正在開發代碼,該代碼應該是沒有錯誤和問題的。這也包括軟件測試中的AI,因為它能夠“以人類難以企及的可靠性”檢測編碼錯誤。
如果您正在用AI編寫代碼,請務必使用靜態代碼分析器驗證代碼是否安全、可靠。
AI編寫代碼可能嗎?
AI可以編寫代碼。
早在2015年,Andrej Karpathy 就運行了一個使用遞歸神經網絡(Recurrent Neural Networks,RNN)生成代碼的項目。他獲取了GitHub的Linux存儲庫(所有源文件和頭文件),將其組合成一個巨大的文檔(超過400 MB的C代碼),并用這些代碼訓練RNN。
以下是它產生的結果:
/* * If this error is set, we will need anything right after that BSD. */ static void action_new_function(struct s_stat_info *wb) { unsigned long flags; int lel_idx_bit = e->edd, *sys & ~((unsigned long) *FIRST_COMPAT); buf[0] = 0xFFFFFFFF & (bit < 4); min(inc, slist-?>bytes); printk(KERN_WARNING "Memory allocated %02x/%02x, " "original MLL insteadn"), min(min(multi_run - s->len, max) * num_data_in), frame_pos, sz + first_seg); div_u64_w(val, inb_p); spin_unlock(&disk->queue_lock); mutex_unlock(&s->sock->mutex); mutex_unlock(&func->mutex); return disassemble(info->pending_bh); } static void num_serial_settings(struct tty_struct *tty) { if (tty == tty) disable_single_st_p(dev); pci_disable_spool(port); return 0; } static void do_command(struct seq_file *m, void *v) { int column = 32 < (cmd[2] & 0x80); if (state) cmd = (int)(int_state ^ (in_8(&ch-?>ch_flags) & Cmd) ? 2 : 1); else seq = 1; for (i = 0; i < 16; i++) { if (k & (1 < 1)) pipe = (in_use & UMXTHREAD_UNCCA) + ((count & 0x00000000fffffff8) & 0x000000f) < 8; if (count == 0) sub(pid, ppc_md.kexec_handle, 0x20000000); pipe_set_bytes(i, 0); } /* Free our user pages pointer to place camera if all dash */ subsystem_info = &of_changes[PAGE_SIZE]; rek_controls(offset, idx, &soffset); /* Now we want to deliberately put it to device */ control_check_polarity(&context, val, 0); for (i = 0; i < COUNTER; i++) seq_puts(s, "policy "); }
AI在一夜之間就生成了代碼,包括函數和函數聲明。它有參數、變量、循環和正確的縮進。括號也是完成的。甚至還有注釋。
但是,AI生成的代碼存在語法錯誤。它沒有跟蹤變量名稱。有時,變量被聲明但從未使用過。還有一些時候,變量被使用了,但未定義。代碼示例中的第二個函數比較了tty == tty。
生成式AI會取代程序員嗎?
AI不會取代程序員。但AI已經在幫助開發人員編寫代碼。像ChatGPT、Github、CoPilot和OpenAI Codex這樣的AI驅動的編碼助手都是可以使用的工具,可以幫助嵌入式開發人員更快地編寫出更好的代碼。AI代碼生成器現在可以快速生成高質量的代碼片段,識別問題和缺陷,并對代碼片段提出改進建議。當然,AI需要時間才能創建跨越幾行實際的、具有生產價值的代碼,而這些代碼的跨度不會超過幾行。
AI在不久的將來如何影響軟件開發?以下是一些可能的趨勢。
▎AI將不斷進步
它將有效地實現任務自動化,幫助開發人員了解他們的選擇。另外,它將讓人類決定如何在AI無法理解的情況下進行優化。
▎AI將成為編碼伙伴
軟件開發人員將使用AI作為編碼伙伴來編寫更好的軟件。這種情況如今已經出現,而且隨著AI學會一次編寫多行代碼,這種情況將繼續普及。開發人員將在集成開發環境中加入AI配對程序員工具。與人類配對編程類似,AI工具將根據提示執行編碼任務,然后開發人員將審查代碼。過去,這一過程需要耗費更多的人力,但AI工具可以比人類開發人員更快地完成SDLC的某些部分,從而讓開發人員能夠專注于更復雜的任務。
▎但程序員依然重要
程序員的真正價值不在于知道如何構建,而在于知道要構建什么。
AI還需要更長的時間才能學會如何解釋每個功能的商業價值,并向您建議首先開發哪些功能。人類程序員的作用始終存在。
如果AI編寫出可靠的代碼會怎樣?
這是一個很大的假設。大多數人都寫不出可靠的代碼。而AI只是一種分析大量人類編寫的代碼的應用程序。因此,AI不太可能寫出可靠的代碼。
大多數程序員都同意這一點。在CodeSignal最近的一項調查中,全球1,000名開發人員被問及他們對AI編碼助手工具的使用情況。雖然81%的開發人員表示他們使用了AI驅動的編碼助手,但55%的受訪軟件工程師表示,他們對AI生成代碼的質量感到擔憂。
因此,AI并不是提高代碼質量的答案。
如何提高代碼質量?
您現在就可以提高代碼質量,但不是通過AI取代程序員,而是利用靜態代碼分析工具。
靜態代碼分析工具可以確保程序員編寫的代碼符合編碼規則,并能夠掃描代碼,找出潛在的錯誤和安全漏洞。它還能發現在代碼審查和軟件測試中經常被忽略的錯誤,從而提高代碼和軟件的整體質量。
提高代碼質量最簡單的方法之一,就是使用靜態代碼分析工具。
Perforce靜態代碼分析工具Helix QAC和Klocwork,因提供其他工具所無法提供的準確診斷而備受推崇。使用Helix QAC和Klocwork,您將收到按風險嚴重程度確定優先級的編碼問題診斷,以及有關如何修復代碼的建議,幫助您確保代碼合規,提高代碼效率和質量。
- END -
文章來源:https://bit.ly/3V0921H
作者簡介:
Stuart Foster,Klocwork 和 Helix QAC 產品經理,Perforce
Stuart Foster在移動和軟件開發方面擁有超過 17 年的經驗。他負責管理消費者應用和企業軟件的產品開發。目前,他負責管理 Perforce 市場領先的代碼質量管理解決方案 Klocwork 和 Helix QAC。他相信開發適合客戶業務需求的產品、特性和功能,并幫助開發人員生成安全、可靠和無缺陷的代碼。Stuart 擁有卡爾頓大學的信息技術、交互式多媒體和設計學士學位,以及阿岡昆應用藝術與技術學院的多媒體設計高級文憑。
審核編輯 黃宇
-
AI
+關注
關注
87文章
31513瀏覽量
270330 -
代碼
+關注
關注
30文章
4825瀏覽量
69046 -
機器學習
+關注
關注
66文章
8438瀏覽量
133082 -
代碼分析
+關注
關注
0文章
8瀏覽量
5669
發布評論請先 登錄
相關推薦
Perforce SAST專家詳解:自動駕駛汽車的安全與技術挑戰,Klocwork、Helix QAC等靜態代碼分析成必備合規性工具
![<b class='flag-5'>Perforce</b> SAST專家詳解:自動駕駛汽車的安全與<b class='flag-5'>技術</b>挑戰,<b class='flag-5'>Klocwork</b>、<b class='flag-5'>Helix</b> <b class='flag-5'>QAC</b>等<b class='flag-5'>靜態</b><b class='flag-5'>代碼</b><b class='flag-5'>分析</b>成必備合規性<b class='flag-5'>工具</b>](https://file1.elecfans.com/web2/M00/E7/A3/wKgZomZMQFaABPseAAAwD5kHnx4413.png)
Helix QAC 2024.3新特性速覽
![<b class='flag-5'>Helix</b> <b class='flag-5'>QAC</b> 2024.3新特性速覽](https://file1.elecfans.com/web2/M00/A9/66/wKgZomUl7m-AHJX6AABuJjgxs14678.png)
Perforce靜態分析工具2024.2新增功能:Helix QAC全新CI/CD集成支持、Klocwork分析引擎改進和安全增強
![<b class='flag-5'>Perforce</b><b class='flag-5'>靜態</b><b class='flag-5'>分析</b><b class='flag-5'>工具</b>2024.2新增功能:<b class='flag-5'>Helix</b> <b class='flag-5'>QAC</b>全新CI/CD集成支持、<b class='flag-5'>Klocwork</b><b class='flag-5'>分析</b>引擎改進和安全增強](https://file1.elecfans.com/web2/M00/E7/A3/wKgZomZMQFaABPseAAAwD5kHnx4413.png)
怎么樣提高verilog代碼編寫水平?
代碼靜態測試工具Klocwork 2024.2新發布
![<b class='flag-5'>代碼</b><b class='flag-5'>靜態</b>測試<b class='flag-5'>工具</b><b class='flag-5'>Klocwork</b> 2024.2新發布](https://file1.elecfans.com/web2/M00/00/BE/wKgZomaxo5qAB7NrAAAgMTA8g3Q197.png)
代碼靜態測試工具Helix QAC 2024.2新發
![<b class='flag-5'>代碼</b><b class='flag-5'>靜態</b>測試<b class='flag-5'>工具</b><b class='flag-5'>Helix</b> <b class='flag-5'>QAC</b> 2024.2新發](https://file1.elecfans.com/web2/M00/00/A3/wKgZomawnhSABg9GAAAjY11CTH4838.png)
DevOps中的質量門工作原理,以及靜態代碼分析Klocwork和Perforce Helix QAC在質量門中的實踐應用
聚焦嵌入式開發的測試工具,確保安全合規:靜態代碼分析Perforce Helix QAC&amp;Klocwork、單元測試TESSY
代碼靜態測試工具 Klocwork 2024.1版新功能解讀
![<b class='flag-5'>代碼</b><b class='flag-5'>靜態</b>測試<b class='flag-5'>工具</b> <b class='flag-5'>Klocwork</b> 2024.1版新功能解讀](https://file1.elecfans.com/web2/M00/DA/EC/wKgZomYrFIiALNSgAABKq-GI1ww411.png)
代碼靜態測試工具 Helix QAC 2024.1版新功能解讀
![<b class='flag-5'>代碼</b><b class='flag-5'>靜態</b>測試<b class='flag-5'>工具</b> <b class='flag-5'>Helix</b> <b class='flag-5'>QAC</b> 2024.1版新功能解讀](https://file.elecfans.com/web2/M00/52/D4/pYYBAGLNkrKAeFJaAAAjXRuImx0496.png)
評論