欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

[點晴永久免費OA]AI正在使全球代碼質量下降!1.53億行代碼深度分析報告出爐

freeflydom
2024年1月31日 19:7 本文熱度 814

  想不到,AI 生成的內容影響數據質量的問題,已經在代碼上出現了。最近,GitClear 發布的一項調查報告顯示,用 AI 寫代碼,正在導致「全球代碼質量面臨下行趨勢」。

  這引起了全網熱烈討論:

  「借助 AI 提供商,您可以將代碼生成速度提高 50%(即使是您不理解或無法編寫的代碼),但代價是代碼的質量和可持續性不斷下降。」

  「我們要追求的,到底是質量還是速度?」

  調查中,GitClear 分析了從 2020 年 1 月到 2023 年 12 月之間編寫的 1.53 億行代碼更改數據,

  ——1.53 億行代碼,是目前已知最大的用于評估代碼質量差異的數據集。

  調查發現了什么?我們先看下面這張圖:

  圖中展示了 4 年中的代碼改動率——編寫后不到兩周就被撤銷或更新的代碼行百分比,——深色部分表示受 AI 代碼生成工具影響的時間。

  調查中同樣發現,「新增代碼」和「復制粘貼代碼」的比例相對于「更新」、「刪除」和「移動」代碼的比例在增加。

  這貌似說明開發人員在大量使用 Copilot 等 AI 代碼生成工具,快速生成了大量代碼,但隨后發現了代碼中的問題,——GitClear 的報告預計在 2024 年,這個代碼改動率將達到 2021 年 AI 出現前的兩倍。

  另外一點就是,AI 代碼生成工具不太理會人類程序員的一些原則(比如「重復造輪子」這件事),也就造成了代碼庫中越來越多的重復代碼。

  ——不過很多碼農都是「CV 程序員」,這樣看來,AI 也算是學到了精髓。

  2023 年,GitHub Copilot 大放異彩。在短短不到兩年時間內,這款 AI 編程助手從一個「原型」迅速成長為「核心工具」,被全球數百萬開發者在數十萬家企業中廣泛應用,開啟了 coding 的新時代。

  對此,GitHub 發表了多篇研究論文,探討了 AI 在軟件開發領域的增長與影響。

  速度提升 55%,GDP 增加 1.5 萬億

  研究表明,使用 Copilot 的開發者編碼速度可以提高「55%」,導致總的代碼量增加了 46%,并且為全球創造了 1.5 萬億美元 GDP。

  有了這樣的成績,也就不難理解為什么 GitHub 的 CEO Thomas Dohmke,會在繁忙的工作之余,專門撰寫關于 AI 革命的文章。

  在 2023 年 2 月 Copilot 個人版用戶超過一百萬之后,GitHub 又推出了 GitHub Copilot for Business 版本。

  那么,有多少開發者在用 AI 來編寫代碼呢?

  GitHub 與 Wakefield Research 在 2023 年 6 月的一項研究中指出,92% 的美國大型公司的開發者表示他們使用了 AI 編程工具。并且有 70% 的開發者認為使用 AI 帶來了明顯的好處。

  不過,O’Reilly Publishing 在 2023 年 8 月給出的調查數據顯示,67% 的開發者沒有用過 ChatGPT 或 Copilot。不管怎樣,GitHub 在市場上仍有巨大的潛力等待挖掘。

  ——然而,大語言模型(LLM)生成的代碼引發的一個問題是:

  這些代碼的質量和可維護性到底怎么樣?

  面對 AI 滔滔不絕吐出的一大堆代碼,程序員似乎不太容易發現其中的問題——畢竟都不是自己寫的。

  還有,眾所周知,當程序員接手前人留下來的*山代碼時,應該遵守的「潛規則」是:

  如果這個代碼能夠正常運行,就千萬不要妄想去重構。

  AI 生成代碼背后的挑戰

  無法否認,Copilot 實實在在的提升了開發者的編碼效率。GitHub 的研究顯示,使用 Copilot 的開發者滿意度提升了 75%。

  做初期產品開發的人是滿意了,可后面負責長期維護的人就蛋疼了。

  資深代碼研究者 Adam Tornhill(著有《代碼即犯罪現場》)對此持保留態度:

  使用 Copilot 可以使代碼編寫速度提高 55%,但如果是本就不應該編寫的代碼呢?

  如《Clean Code: A Handbook of Agile Software Craftsmanship》一書的作者 Robert Martin 所說,代碼的閱讀時間是編寫時間的十倍。快速編寫糟糕的代碼,意味著給后來的代碼閱讀者帶來了巨大的負擔。

  此外,AI 代碼助手還帶來了其他問題:

  比如代碼助手擅長生成代碼,卻不擅長修改;當有多個生成工具給出建議時,評估哪個更好是很耗費時間的;

  最后,AI 代碼助手與開發者的動機可能不同,對于代碼優化來說,AI 往往傾向于提出最有可能被接受的建議。

  所以,相比于經驗更豐富的開發人員,初級開發者更傾向于接受 AI 給出的代碼建議:

  而老鳥們深知,隨著時間推移,代碼的維護成本會越來越高。

  代碼操作介紹

  GitClear 將代碼變更分為七個類別(研究中涉及前六種):

1. 新增代碼:首次提交的代碼行,代碼行是全新的,不包括對現有代碼行的小幅修改,也不包括那些被添加、移除后又重新添加的代碼行。 2. 刪除代碼:被刪除并提交的代碼行,且至少在隨后的兩周內未被重新加入。 3. 移動代碼:將一行代碼剪切并粘貼到新文件或同一文件內的新函數中。「移動」的操作僅涉及位置的變換,代碼內容不發生改變。 4. 更新代碼:修改大約三個或更少的單詞來更改原有代碼行。 5. 查找/替換代碼:從三個或更多位置移除相同字符串,并用一致的內容進行替換。 6. 復制/粘貼代碼:在一次提交中,將相同的代碼行內容復制到多個文件或函數中。 7. 無操作代碼:指一些微小的代碼變更,比如空格或同一代碼塊內行號的變化。

  GitClear 自 2020 年起根據這些操作對 git 倉庫進行分類,并在 Diff Delta 文檔中提供了代碼操作的具體示例。

  截至 2024 年 1 月,GitClear 分析并分類了大約十億行代碼,這些代碼來自商業客戶(如 NextGen Health, Verizon)和流行的開源倉庫(如 Facebook React, Google Chrome)。

  其中,1.53 億行代碼為有意義的變更,被用于本研究。

  最后,還有一個單獨的定義叫做「攪動」(churn),意思是代碼被創建、推送到 git 倉庫后,在接下來的兩周內被撤銷或大幅修改。

  ——也就是咱們最開始分析的那張圖,可以將「攪動」理解為,作者一開始編寫、提交并推送到公司 git 倉庫的代碼有問題,后來發現了。

  數據分析

  下表根據 GitClear 的數據,分析了不同的代碼行操作數量,并按照代碼的編寫年份進行分類。

  表中的前六項就是上面提到的代碼變更的前六個類別,而最后一項是「攪動」。

  將表格數據繪制成下面的圖表,可以更清晰地看出各種代碼操作類型的變化趨勢,比如,圖表中的淺藍色細線顯示了「Churn」類型代碼的變化:

  對于 2024 年的預測,這里使用 OpenAI 的 gpt-4-1106-preview 助手,對現有數據進行二次回歸分析。

  通過對比 2022 年與 2023 年的操作頻率差異,識別出了三個可能影響代碼質量的警示信號:

  危險信號

  2023 年,我們目睹了代碼攪動、移動和復制粘貼方面的顯著變化,這些變化背后的含義值得深入探討。

  代碼攪動的新趨勢

  「代碼攪動(Churn)」反映了推送到代碼倉庫后,在接下來的兩周內被撤銷、移除或更新的代碼比例。

  過去,當開發者完全自主編寫代碼時,這種情況相對罕見——2023 年之前,僅有3-4% 的代碼會發生攪動。

  然而,2022 年,隨著 Copilot 的首次亮相和 ChatGPT 的問世,代碼攪動率的預兆性跳升至9%。

  2022 至 2023 年間,AI 助手的崛起與倉庫中錯誤代碼的增加密切相關。

  假設 Copilot 在 2021 年的普及率為0%,2022 年為5-10%,2023 年達到 30%,這些變量之間的 Pearson 相關系數高達 0.98,顯示了它們的同步增長。

  隨著代碼攪動成為常態,錯誤代碼部署到生產環境的風險也隨之增大。如果這一趨勢持續到 2024 年,超過7% 的代碼更改可能會在兩周內被撤銷,這是 2021 年的兩倍。

  據此,報告預計 Google DORA 在年底發布的「2024 Devops 狀態」報告中,將顯示「變更失敗率」的上升。當然前提是研究包含了 2023 年使用 AI 輔助的開發者數據。

  代碼移動減少,反映出重構和復用的減少

  代碼移動通常出現在對現有代碼系統進行重構時。

  重構系統,特別是代碼的移動,是代碼復用的基礎。隨著產品范圍擴大,開發者會將現有代碼重組到新的模塊和文件中,以便新功能復用。

  對經驗豐富的開發者而言,代碼復用的好處顯而易見——與新增代碼相比,復用的代碼已經過測試并在生產環境中證明其穩定性。

  復用的代碼往往已被多人修改,更可能包含文檔,這有助于新人更快理解模塊。

  隨著標記為「復制粘貼」的代碼增加,AI 助手似乎在抑制代碼的復用,而是提供了一種重復現有代碼的簡單方式,而不是鼓勵重構和遵循「不要重復自己(DRY)」的原則。

  復制粘貼代碼增多,預示著未來的維護困難

  長期來看,復制粘貼代碼可能是對代碼可維護性的影響最大的因素。

  當代碼行被重復使用時,本質上意味著「我沒有時間去評估之前的實現方式」。

  選擇復制粘貼新代碼而沒有復用代碼,會使得未來的維護工作變得更加困難,因為需要整合那些實現相同功能的平行代碼的實現方式。

  大多數開發者更喜歡「實現新功能」而不是「解讀可能可復用的代碼」,因此復制粘貼的代碼往往會長時間存在。

  而且在經驗缺乏的團隊中,可能沒有有能力且有權威的代碼維護者來刪除那些重復的代碼。

  即便是資深開發者,要充分理解代碼從而刪除某些重復的代碼,所需的努力也是非常巨大的。

  如果沒有 CTO 或工程負責人主動安排時間來減輕技術債,那么「自上而下的時間壓力」就會成為新添加的復制粘貼代碼,讓這些代碼永遠無法整合到改善長期開發速度的庫中的又一個原因。

  由于 GitClear 只統計單次提交中的重復代碼,2023 年測得的 11% 復制粘貼比例可能只是只是今年復制粘貼代碼非常小的一部分。

  總結

  根據報告評估的兩個關鍵數據點顯示,2023 年代碼質量出現了嚴重的下降。這種情況與大語言模型(LLM)的廣泛應用,尤其是 AI 代碼助手的流行有直接關聯。

  GitHub 與 Wakefield Research 在 2023 年的一項調查反映出開發者已經意識到代碼質量的下降。

  當被問及「在沒有 AI 輔助的情況下,你認為應該評估哪些指標?」他們最關注的是「協作與溝通」,緊隨其后的是「代碼質量」。

  而當問題變為「在使用 AI 輔助時,你認為應該評估哪些指標?」他們的答案發生了變化,其中「代碼質量」躍升為最受關注的問題,「生產環境中的問題事件」也上升至第三位:

  單個開發者的情況可能無法說明為何「代碼質量」和「生產環境中的問題事件」在使用 AI 時顯得更加重要,但報告的數據揭示了一個可能的原因:

  當開發者被一波又一波看似合適、能短期內解決問題的建議所淹沒時,他們很容易不斷增加代碼量,卻忽視了代碼的優化和復用。

  ——如果按一下 Tab 鍵就能解決當前的問題,為什么要費心思管以后的事情?

  AI 助手和 Copilot 將如何重塑開發者的角色?隨著 AI 技術的廣泛應用,毫無疑問,我們已經進入了一個代碼增長速度空前的新時代。

  那么,2024 年的問題可能是:誰來收拾事后的爛攤子?

  網友討論

  面對 AI 帶來的「全球代碼質量下行」,網友也是深有體會:

  譴責型:「我在兩個月后取消了訂閱(Copilot),因為我花了太多精力去修復所有代碼錯誤。而且在處理任何復雜的事情或與 SQL 有關的事情時,它基本上是無用的(即使我提前加載了整個模式)。」

  大佬型:「寫下所有東西其實要花的功夫少得多,因為我知道自己想寫什么,而且修正自己的錯誤比修正機器人的錯誤更容易」。

  悲天憫人型:「我為那些將被這種垃圾徹底擊垮的初學者而哭泣。」

  中立型:「Copilot 能做的事讓我很吃驚,但確實不能說生成的代碼很好。生成的代碼肯定得改,但是確實能幫你省不少時間」。

  參考資料:


轉自公眾號新智元


該文章在 2024/2/2 8:54:30 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved