全球代码质量骤降,都是AI生成代码的锅?

这貌似说明开发人员在大量使用Copilot等AI代码生成工具,快速生成了大量代码,但随后发现了代码中的问题,GitClear的报告表明,预计在2024年,这个代码改动率将达到2021年AI出现前的两倍。

将表格数据绘制成下面的图表,可以更清晰地看出各种代码操作类型的变化趋势,比如,图表中的浅蓝色细线显示了“Churn”类型代码的变化:

对于2024年的预测,这里使用OpenAI的GPT-4-1106-preview助手,对现有数据进行二次回归分析。

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年,我们目睹了代码搅动、移动和复制粘贴方面的显著变化,这些变化背后的含义值得深入探讨。

1. 代码搅动的新趋势

“代码搅动(Churn)”反映了推送到代码仓库后,在接下来的两周内被撤销、移除或更新的代码比例。

过去,当开发者完全自主编写代码时,这种情况相对罕见——2022年之前,仅有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辅助的开发者数据。

2. 代码移动减少,反映出重构和复用的减少

代码移动通常出现在对现有代码系统进行重构时。

重构系统,特别是代码的移动,是代码复用的基础。随着产品范围扩大,开发者会将现有代码重组到新的模块和文件中,以便新功能复用。

对经验丰富的开发者而言,代码复用的好处显而易见——与新增代码相比,复用的代码已经过测试并在生产环境中证明其稳定性。

复用的代码往往已被多人修改,更可能包含文档,这有助于新人更快理解模块。

随着标记为“复制粘贴”的代码增加,AI助手似乎在抑制代码的复用,而是提供了一种重复现有代码的简单方式,而不是鼓励重构和遵循“不要重复自己(DRY)”的原则。

3. 复制粘贴代码增多,预示着未来的维护困难

长期来看,复制粘贴代码可能是对代码可维护性的影响最大的因素。

当代码行被重复使用时,本质上意味着“我没有时间去评估之前的实现方式”。

选择复制粘贴新代码而没有复用代码,会使得未来的维护工作变得更加困难,因为需要整合那些实现相同功能的平行代码的实现方式。

大多数开发者更喜欢“实现新功能”而不是“解读可能可复用的代码”,因此复制粘贴的代码往往会长时间存在。

而且在经验缺乏的团队中,可能没有有能力且有权威的代码维护者来删除那些重复的代码。

即便是资深开发者,要充分理解代码从而删除某些重复的代码,所需的努力也是非常巨大的。

如果没有CTO或工程负责人主动安排时间来减轻技术债,那么“自上而下的时间压力”就会成为新添加的复制粘贴代码,让这些代码永远无法整合到改善长期开发速度的库中的又一个原因。

由于GitClear只统计单次提交中的重复代码,2023年测得的11%复制粘贴比例可能只是今年复制粘贴代码非常小的一部分。

三、总结

报告评估的两个关键数据点显示,2023年代码质量出现了严重的下降。这种情况与大语言模型(LLM)的广泛应用,尤其是AI代码助手的流行有直接关联。

GitHub与Wakefield Research在2023年的一项调查反映出开发者已经意识到代码质量的下降。

当被问及“在没有AI辅助的情况下,你认为应该评估哪些指标?”他们最关注的是“协作与沟通”,紧随其后的是“代码质量”。

而当问题变为“在使用AI辅助时,你认为应该评估哪些指标?”他们的答案发生了变化,其中“代码质量”跃升为最受关注的问题,“生产环境中的问题事件”也上升至第三位:

单个开发者的情况可能无法说明为何“代码质量”和“生产环境中的问题事件”在使用AI时显得更加重要,但报告的数据揭示了一个可能的原因:

当开发者被一波又一波看似合适、能短期内解决问题的建议所淹没时,他们很容易不断增加代码量,却忽视了代码的优化和复用。

如果按一下Tab键就能解决当前的问题,为什么要费心思管以后的事情?

AI助手和Copilot将如何重塑开发者的角色?随着AI技术的广泛应用,毫无疑问,我们已经进入了一个代码增长速度空前的新时代。

那么,2024年的问题可能是:谁来收拾事后的烂摊子?

四、网友讨论

面对AI带来的“全球代码质量下行”,网友也是深有体会:

谴责型:“我在两个月后取消了订阅(Copilot),因为我花了太多精力去修复所有代码错误。而且在处理任何复杂的事情或与SQL有关的事情时,它基本上是无用的(即使我提前加载了整个模式)。”

大佬型:“写下所有东西其实要花的功夫少得多,因为我知道自己想写什么,而且修正自己的错误比修正机器人的错误更容易”。

悲天悯人型:“我为那些将被这种垃圾彻底击垮的初学者而哭泣。”

中立型:“Copilot能做的事让我很吃惊,但确实不能说生成的代码很好。生成的代码肯定得改,但是确实能帮你省不少时间”。

参考资料:https://www.gitclear.com/coding_on_copilot_data_shows_ais_downward_pressure_on_code_quality

本文来自微信公众号:新智元 (ID:AI_era),作者:新智元

声明: 该内容为作者独立观点,不代表新零售资讯观点或立场,文章为网友投稿上传,版权归原作者所有,未经允许不得转载。 新零售资讯站仅提供信息存储服务,如发现文章、图片等侵权行为,侵权责任由作者本人承担。 如对本稿件有异议或投诉,请联系:wuchangxu@youzan.com
Like (0)
Previous 2024年1月29日 16:10
Next 2024年1月29日

相关推荐

  • 水温80度:AI行业真假繁荣的临界点

    我们从来没拥有过这么成功的AI主导的产品。

    (这种分析统计并不那么准,但大致数量级是差不多的)

    这两个产品碰巧可以用来比较有两个原因:

    一个是它们在本质上是一种东西,只不过一个更通用,一个更垂直。

    蓝海的海峡

    未来成功的AI产品是什么样,大致形态已经比较清楚了,从智能音箱和Copilot这两个成功的AI产品上已经能看到足够的产品特征。

    未来科技 2024年6月5日
  • ChatGPT、Perplexity、Claude同时“罢工”,全网打工人都慌了

    美西时间午夜12点开始,陆续有用户发现自己的ChatGPT要么响应超时、要么没有对话框或提示流量过载,忽然无法正常工作了。

    因为发现AI用久了,导致现在“离了ChatGPT,大脑根本无法运转”。”

    等等,又不是只有一个聊天机器人,难道地球离了ChatGPT就不转了。

    大模型连崩原因猜想,谷歌躺赢流量激增6成

    GPT归位,人们的工作终于又恢复了秩序。

    未来科技 2024年6月5日
  • ChatGPT宕机8小时,谷歌Gemini搜索量激增60%

    ChatGPT一天宕机两次

    谷歌Gemini搜索量激增近60%

    ChatGPT在全球拥有约1.8亿活跃用户,已成为部分人群工作流程的关键部分。

    过去24小时内提交的关于OpenAI宕机的问题报告

    图片来源:Downdetector

    ChatGPT系统崩溃后,有网友在社交媒体X上发帖警告道:“ChatGPT最近发生的2.5小时全球中断,为我们所有依赖AI工具来支持业务的人敲响了警钟。

    未来科技 2024年6月5日
  • ChatGPT、Perplexity、Claude同时大崩溃,AI集体罢工让全网都慌了

    接着OpenAI也在官网更新了恢复服务公告,表示“我们经历了一次重大故障,影响了所有ChatGPT用户的所有计划。Generator调查显示,在ChatGPT首次故障后的四小时内,谷歌AI聊天机器人Gemini搜索量激增60%,达到327058次。

    而且研究团队表示,“Gemini”搜索量的增长与“ChatGPT故障”关键词的搜索趋势高度相关,显示出用户把Gemini视为ChatGPT的直接替代选项。

    未来科技 2024年6月5日
  • 深度对话苹果iPad团队:玻璃的传承与演变

    iPad最为原始的外观专利

    没错,这就是iPad最初被设想的样子:全面屏,圆角矩形,纤薄,就像一片掌心里的玻璃。

    2010年发布的初代iPad

    好在乔布斯的遗志,并未被iPad团队遗忘。

    初代iPad宣传片画面

    乔布斯赞同这一想法,于是快速将资源投入平板电脑项目,意欲打造一款与众不同的「上网本」,这就是iPad早年的产品定义。

    iPad进化的底色

    苹果发布会留下过很多「名场面」,初代iPad发布会的末尾就是一例。

    未来科技 2024年6月5日
  • 底层逻辑未通,影视业的AI革命正在褪色…

    GPT、Sora均为革命性产品,引发了舆论风暴,但它在上个月发布的“多模态语音对谈”Sky语音,却由于声音太像电影明星斯嘉丽·约翰逊,被正主强烈警告,被迫下架。

    华尔街日报也在唱衰,认为“AI工具创新步伐正在放缓,实用性有限,运行成本过高”:

    首先,互联网上已经没有更多额外的数据供人工智能模型收集、训练。

    03、

    如果说训练“数字人”、使用AI配音本质上瞄向的仍是影视行业固有的发展方向,那么还有另外一群人试图从根本上颠覆影视行业的生产逻辑和产品形态。

    但分歧点正在于此,电影公司希望通过使用AI技术来降低成本,但又不希望自己的内容被AI公司所窃取。

    未来科技 2024年6月5日
  • KAN会引起大模型的范式转变吗?

    “先变后加”代替“先加后变”的设计,使得KAN的每一个连接都相当于一个“小型网络”, 能实现更强的表达能力。

    KAN的主要贡献在于,在当前深度学习的背景下重新审视K氏表示定理,将上述创新网络泛化到任意宽度和深度,并以科学发现为目标进行了一系列实验,展示了其作为“AI+科学”基础模型的潜在作用。

    KAN与MLP的对照表:

    KAN使神经元之间的非线性转变更加细粒度和多样化。

    未来科技 2024年6月5日
  • 这个国家,也开始发芯片补贴了

    //mp.weixin.qq.com/s/tIHSNsqF6HRVe2mabgfp6Q
    [4]中国安防协会:欧盟批准430亿欧元芯片补贴计划:2030年产量占全球份额翻番.2023.4.19.https。//mp.weixin.qq.com/s/VnEjzKhmZbuBUFclzGFloA
    [6]潮电穿戴:印度半导体投资大跃进,一锤砸下1090亿,政府补贴一半.2024.3.5https。

    未来科技 2024年6月5日
  • 大模型的电力经济学:中国AI需要多少电力?

    这些报告研究对象(数字中心、智能数据中心、加密货币等)、研究市场(全球、中国与美国等)、研究周期(多数截至2030年)各不相同,但基本逻辑大同小异:先根据芯片等硬件的算力与功率,计算出数据中心的用电量,再根据算力增长的预期、芯片能效提升的预期,以及数据中心能效(PUE)提升的预期,来推测未来一段时间内智能数据中心的用电量增长情况。

    未来科技 2024年6月5日
  • 你正和20万人一起接受AI面试

    原本客户还担心候选人能否接受AI面试这件事,但在2020年以后,候选人进行AI面试的过程已经是完全自动化的,包括面试过程中AI面试官回答候选人的问题,AI面试官对候选人提问以及基于候选人的回答对候选人进行至多三个轮次的深度追问。

    以近屿智能与客户合作的校验周期至少3年来看,方小雷认为AI应用不太可能一下子爆发,包括近屿智能在内的中国AI应用企业或许要迎来一个把SaaS做起来的好机会。

    未来科技 2024年6月4日