導讀 在軟件开發領域,AI工具越來越流行。去年GitHub發布報告稱,有了AI輔助工具,开發者編程速度提高55%。但是,AI工具輔助編寫的代碼是不是更好呢?GitClear對2020年1月至2023年12...
在軟件开發領域,AI工具越來越流行。去年GitHub發布報告稱,有了AI輔助工具,开發者編程速度提高55%。
但是,AI工具輔助編寫的代碼是不是更好呢?GitClear對2020年1月至2023年12月間編寫的1.53億行代碼進行檢查發現,相比以前,編寫之後修改的代碼行數明顯增加,2024年相比2021年增加了一倍。
換言之,有了AI工具,雖然編程速度加快了,但在第一次編寫時錯誤也大大增加了。形象地說,用AI輔助編寫代碼,就像聘請一名短期合同工爲你工作,他關心的是如何編寫冗長的代碼,而不是保證代碼的可維護性。
AI會復制原有代碼的錯誤
开發者安全公司Snyk在報告中指出,GitHubAI編程輔助工具Copilot並不安全,如果已有代碼庫本身存在安全問題,工具編寫的代碼同樣也會不安全。
Snyk在2月22日的報告中指出,Copilot會復制代碼中存在的安全問題,如此一來,已有安全隱患會讓Copilot代碼更加不安全。
市場上已經出現不少生成式AI編程工具,比如亞馬遜CodeWhisperer,ChatGPT等。現有工具的最大問題在於:它無法理解語義,所以無法對代碼作出評判。
GitHubCopilot從海量過往代碼中學習,形成特定模式和結構,然後生成代碼片段。這套學習方法有一定優勢,但也有一個缺陷。Copilot代碼可能會復制已有安全漏洞,或者復制相鄰文件中的不良案例。
如何降低影響呢?Snyk給出一些建議:包括开發者手動檢查代碼;安全團隊應該設立SAST護欄;开發者應該遵守安全編程指南;安全團隊應該給开發團隊培訓,將每個團隊的積壓問題分類,按優先級排序;執行團隊應該強制設置安全護欄。
一般來說,平均每個商務軟件項目的第一手代碼都會有40個漏洞,當中約三分之一都是高危漏洞。AI生成工具會復制這些漏洞,影響惡劣。跨站腳本攻擊(cross-sitescripting,XSS)、路徑穿越(PathTraversal)、SQL注入、硬編碼加密密鑰等安全問題比較常見。
所以,行業幾乎有一個共識:就眼下來看,AI輔助編程還沒有迎來黃金時代,AI還不夠好。
但AI輔助編程未來可期
GitHubCEOThomasDohmke不久前接受採訪時表示:“开發者已經進入AI時代。現在的問題已經很明確,你准備以多快的速度上船?你是不是准備繼續沉醉於過去,站在歷史錯誤的一邊,忽視生產力提升的大好機遇?”
GitHubCopilot實際上歸微軟所有,最新財報顯示,最近一個季度Copilot付費用戶數已經突破130萬,相比前一個季度猛增30%,已經有5萬家企業使用Copilot。
ThomasDohmke稱,平台上用戶編寫的代碼約有一半是AI生成的。ThomasDohmke認爲,社區已經普遍接受一個觀點,即AI生成代碼需要人類程序員監督審核。
值得一提的是,新手程序員特別喜歡使用Copilot,因爲它能協助解決編程難題。
隨着編程自動化程度的增加,代碼中的錯誤可能會越來越多,這點其實已經引起爭論。ThomasDohmke稱,自Copilot引入之後錯誤增加數量比較“正常”,沒有證據證明AI導致錯誤猛增。
真是這樣嗎?未必。新手程序員大規模使用AI,一旦出現錯誤,新手可能無法發現,整個代碼的質量可能會下降。
微軟對AI工具充滿期待,除了編程,它還希望Copilot能幫助用戶寫郵件、制作電子表格、分析Office文檔。微軟甚至還爲WindowsPC鍵盤增加一個“Copilot”按鍵。谷歌也在开發類似工具。
微軟CEO納德拉在最近的財報會議上表示,圍繞GitHubCopilot和它的生產力問題,我們已經看到很多的證據和數據,結果不錯。納德拉預計其它Copilot應用也會帶來良好效果。
總之,目前Copilot還是新生事物,相信再過一段時間,當我們擁有更多數據,就能對上述問題有更深刻理解。
標題:AI輔助編程現狀:AI工具提高了速度,但錯誤代碼也大幅增加
地址:https://www.utechfun.com/post/336949.html