自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

1.5億行代碼變更背后:代碼質(zhì)量下降,誰(shuí)來(lái)背鍋?

譯文 精選
開(kāi)發(fā) 前端
在編程中,確定程序應(yīng)完成什么功能、如何運(yùn)作及出現(xiàn)問(wèn)題時(shí)的排查至關(guān)重要。這些核心技能只能通過(guò)長(zhǎng)期堅(jiān)持實(shí)踐逐漸培養(yǎng)起來(lái)。

編譯丨諾亞

出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)

隨著AI技術(shù)的發(fā)展,如今學(xué)習(xí)編程或許比以往任何時(shí)候都更加容易。但最新研究揭示了AI輔助編程工具對(duì)代碼質(zhì)量的影響并不盡如人意。

一、代碼攪動(dòng)上升至7.1% 

該研究由開(kāi)發(fā)者分析公司GitClear基于對(duì)1.5億行代碼變更數(shù)據(jù)的深入分析得出,其中三分之二的數(shù)據(jù)來(lái)源于同意匿名共享數(shù)據(jù)的私營(yíng)企業(yè),三分之一則主要來(lái)自谷歌、臉書(shū)和微軟等公司的開(kāi)源項(xiàng)目。

值得注意的是,GitHub的Copilot自2021年6月進(jìn)入測(cè)試階段以來(lái),迅速引領(lǐng)了AI編碼潮流,目前已有超過(guò)百萬(wàn)名付費(fèi)訂閱用戶(hù),并且據(jù)其CEO托馬斯·多姆克透露,在啟用Copilot功能的文件中,開(kāi)發(fā)者完成任務(wù)的速度提升了55%,并且46%的代碼內(nèi)容是由Copilot協(xié)助完成的。

然而,GitClear的研究重點(diǎn)并非單純關(guān)注代碼的數(shù)量,而是更加關(guān)注代碼質(zhì)量本身。研究發(fā)現(xiàn),AI助手傾向于提供“新增代碼的建議,但從未給出更新、移動(dòng)或刪除代碼的建議”。研究人員還推測(cè),“代碼建議算法傾向于提出最有可能被采納的建議”,而忽視了編寫(xiě)簡(jiǎn)潔易讀代碼的重要性。

圖片圖片

由GitClear分析的代碼變更趨勢(shì)(如上圖)表明,新增、刪除、更新和復(fù)制粘貼的代碼數(shù)量達(dá)到了前所未有的高度,而代碼被移動(dòng)的情況卻在減少。他們還注意到“代碼攪動(dòng)”(指一定時(shí)間范圍內(nèi)對(duì)同一段代碼的改動(dòng),是“異?!钡拇a改動(dòng),體現(xiàn)代碼的返工程度)上升到了7.1%,相較于2020年的3.3%有顯著增長(zhǎng)。   

這些趨勢(shì)背后的原因尚未明確,但研究人員認(rèn)為這可能與日益普遍采用AI編碼技術(shù)有關(guān)。對(duì)于更多復(fù)制粘貼代碼的現(xiàn)象,他們嚴(yán)厲批評(píng)稱(chēng)“對(duì)長(zhǎng)期代碼可維護(hù)性而言,沒(méi)有比這更大的禍患了”。

過(guò)度使用復(fù)制粘貼并不是一個(gè)新問(wèn)題。開(kāi)發(fā)人員這樣做可能是因?yàn)楫?dāng)時(shí)覺(jué)得這種方式比找出如何重用現(xiàn)有代碼更快更容易,或是因?yàn)轫?xiàng)目中多位開(kāi)發(fā)者之間溝通不暢,或者從示例或編程問(wèn)答網(wǎng)站上復(fù)制了過(guò)多代碼。

GitClear的研究人員并未就如何解決識(shí)別出的問(wèn)題提供太多解決方案,而是將這些問(wèn)題留作后續(xù)研究的課題,盡管他們建議工程負(fù)責(zé)人應(yīng)“監(jiān)測(cè)輸入數(shù)據(jù)并考慮其對(duì)未來(lái)產(chǎn)品維護(hù)的影響”。

二、不要簡(jiǎn)單地復(fù)制和粘貼

AI編碼助手并不會(huì)消失,反而可能會(huì)不斷改進(jìn),如同所有新興工具一樣,開(kāi)發(fā)者要學(xué)習(xí)如何優(yōu)化它們的使用方法。但對(duì)于一部分開(kāi)發(fā)人員包括初學(xué)編程的新手來(lái)說(shuō),如何理性使用這種工具并防止養(yǎng)成依賴(lài)性屬實(shí)是一個(gè)難題。

正如一個(gè)開(kāi)發(fā)人員所說(shuō):“我在某個(gè)問(wèn)題上卡住時(shí),很容易就會(huì)想求助于ChatGPT這樣的工具,它能輕易幫我找到正確答案。這類(lèi)輔助工具擅長(zhǎng)生成簡(jiǎn)單的代碼,其中一些甚至能在你描述問(wèn)題后直接給出完整的解決方案。”不過(guò),他很快意識(shí)到,這種習(xí)慣一旦養(yǎng)成,實(shí)際上弊大于利。

如前文所述,機(jī)器生成的代碼并不總是有用,并且可能會(huì)降低代碼庫(kù)的質(zhì)量。如果只是簡(jiǎn)單復(fù)制并粘貼AI助手生成的代碼到源代碼中,往往會(huì)導(dǎo)致新的錯(cuò)誤出現(xiàn),因?yàn)檫@段代碼可能與程序其余部分不協(xié)調(diào)。嘗試修復(fù)這些錯(cuò)誤可能會(huì)相當(dāng)棘手,特別是當(dāng)你不清楚生成的代碼具體含義時(shí)。很多人有時(shí)很難分辨錯(cuò)誤是因?yàn)榇a本身有問(wèn)題,還是因?yàn)樵阱e(cuò)誤的上下文中使用了它。

《笨辦法學(xué)Python》的作者Zed Shaw建議:“如果有人想要利用當(dāng)前這一批AI工具學(xué)習(xí)編程,他們應(yīng)該帶著兩個(gè)目標(biāo)來(lái)著手:首先,花時(shí)間學(xué)習(xí)足夠多的編程知識(shí),以便了解工具生成的是什么內(nèi)容;其次,承擔(dān)起‘代碼審查員’的角色,學(xué)會(huì)如何識(shí)別并改進(jìn)低質(zhì)量代碼。”

程序員應(yīng)當(dāng)具備發(fā)現(xiàn)機(jī)器生成代碼中的錯(cuò)誤的能力,而不應(yīng)完全依賴(lài)于這些智能助手。他們尤其需要注意防止明顯的版權(quán)代碼未經(jīng)許可混入模型輸出的結(jié)果中。

密歇根大學(xué)信息學(xué)院計(jì)算機(jī)科學(xué)教授Charles Severance指出:“ChatGPT給出解決方案的速度非???,并且其回答通常包裝在諸如‘我認(rèn)為這應(yīng)該能解決你的問(wèn)題……’這樣令人安心的措辭中,這使我們?nèi)菀钻P(guān)閉批判性思考模式,不再像應(yīng)該的那樣仔細(xì)審視其提供的解決方案。”

Severance補(bǔ)充說(shuō):“始終假設(shè)ChatGPT是一個(gè)比你技能較低的程序員。使用AI工具的唯一安全方法是當(dāng)你確信它產(chǎn)生的解決方案是正確的時(shí)候?!边@意味著作為開(kāi)發(fā)者,我們要保持警覺(jué)和獨(dú)立判斷,確保AI提出的方案既符合需求也無(wú)潛在風(fēng)險(xiǎn),同時(shí)通過(guò)自身的專(zhuān)業(yè)知識(shí)進(jìn)行驗(yàn)證和完善。

三、明確問(wèn)題并進(jìn)行準(zhǔn)確的表述

GitHub的首席產(chǎn)品官I(mǎi)nbal Shani強(qiáng)調(diào),要有效地使用AI編程工具,用戶(hù)首先必須明確自己的問(wèn)題,并在輸入提示中清晰地表述出來(lái)。GitHub Copilot等工具返回代碼的質(zhì)量直接取決于提問(wèn)的方式和問(wèn)題的描述準(zhǔn)確性。

她建議,用戶(hù)應(yīng)當(dāng)像與同事交談那樣與Copilot互動(dòng),提供盡可能詳盡的上下文信息,包括解決問(wèn)題的目標(biāo)、意圖以及所處階段,這樣就能獲得更好的反饋,因?yàn)锳I能夠基于更多背景信息進(jìn)行更深入的搜索,從而找到合適的代碼片段或推薦相應(yīng)的測(cè)試架構(gòu)。

卡內(nèi)基梅隆大學(xué)的助理教授Phillip Compeau對(duì)此觀(guān)點(diǎn)表示贊同。他認(rèn)為現(xiàn)今使用的編程語(yǔ)言越來(lái)越趨向于人類(lèi)自然語(yǔ)言的表達(dá)方式,而聊天工具正是這一演變過(guò)程中的下一步。在教學(xué)過(guò)程中,Compeau會(huì)引導(dǎo)初學(xué)編程的學(xué)生先不依賴(lài)AI技術(shù),但對(duì)已掌握基礎(chǔ)編程知識(shí)的高級(jí)學(xué)生,則教導(dǎo)他們?nèi)绾斡行Ю眠@類(lèi)工具提高工作效率。

Compeau表示:“我向?qū)W生們展示的一點(diǎn)是,從AI工具生成代碼中獲取簡(jiǎn)潔、正確答案的最佳方法是你能夠準(zhǔn)確無(wú)誤地闡述計(jì)算機(jī)需要執(zhí)行的具體任務(wù)。這恰恰是對(duì)編程的定義,隨著時(shí)代的發(fā)展,我們所使用的編程語(yǔ)言已經(jīng)愈發(fā)貼近人類(lèi)語(yǔ)言;聊天工具則是這種演進(jìn)道路上的一個(gè)新階段?!?/p>

在編程中,確定程序應(yīng)完成什么功能、如何運(yùn)作及出現(xiàn)問(wèn)題時(shí)的排查至關(guān)重要。這些核心技能只能通過(guò)長(zhǎng)期堅(jiān)持實(shí)踐逐漸培養(yǎng)起來(lái)。如果想成為一名合格的軟件開(kāi)發(fā)者,單純依賴(lài)AI是無(wú)法繞過(guò)這個(gè)學(xué)習(xí)過(guò)程的。然而,若能明智地運(yùn)用AI工具,的確可以加速提升編程能力,并有望成為一個(gè)優(yōu)秀的程序員——甚至可能在這個(gè)過(guò)程中享受到樂(lè)趣。

參考鏈接:

https://www.theregister.com/2024/01/27/ai_coding_automatic/

https://devclass.com/2024/01/24/ai-assistance-is-leading-to-lower-code-quality-claim-researchers/    

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2021-08-16 15:50:24

輔助駕駛自動(dòng)駕駛蔚來(lái)

2019-12-03 13:57:38

CIO背鍋IT

2020-04-09 10:43:12

長(zhǎng)事務(wù)P0故障

2024-01-29 12:42:37

AI訓(xùn)練

2017-06-05 08:46:47

信息安全個(gè)人信息信息泄露

2017-09-25 10:52:27

2015-09-21 09:36:54

20 億代碼谷歌

2015-09-18 11:47:45

代碼Google管理

2021-06-24 17:37:58

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2019-09-17 10:31:51

崗位產(chǎn)品程序員

2019-04-10 09:39:42

代碼存儲(chǔ)系統(tǒng)RPC

2018-12-26 17:36:37

開(kāi)發(fā)者技能阿里

2022-01-26 20:09:21

自動(dòng)駕駛地鐵屏蔽門(mén)

2022-03-25 09:22:42

代碼開(kāi)發(fā)

2018-01-02 13:30:04

代碼質(zhì)量代碼預(yù)言

2020-11-30 09:31:28

微信代碼程序員

2019-01-04 10:13:22

蘋(píng)果中國(guó)市場(chǎng)iPhone

2019-01-16 18:11:28

程序員技能開(kāi)發(fā)者

2018-10-19 16:35:20

運(yùn)維

2012-11-07 09:48:26

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)