6

代码屎山噩梦加速来袭,都是AI生成代码的锅?

 7 months ago
source link: https://www.techug.com/post/is-the-nightmare-of-code-shishan-accelerating-all-ai-generated-code-pots-614d76/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

代码屎山噩梦加速来袭,都是AI生成代码的锅?



is-the-nightmare-of-code-shishan-accelerating-all-ai-generated-code-pots-614d76.01.jpeg.webp

编译 | 核子可乐、褚杏娟

“周边很多程序员一直在使用,都是用上就离不开了!”知乎上,在“大家现在使用哪些 AI 辅助编程工具?节省了多少工作量?”话题下,答主“以默”说道。

按照“以默”了解的情况,AI 辅助编程工具估计至少能帮程序员减少 30% 的工作量。对于工具,他表示“当然首选 GPT,也可能是唯一答案!国产在这方面差距很大。”“综合能力水平: 4.0>3.5>国产大模型。模型能力越强,越好用!”

现在用 AI 辅助编程已经是很多程序员的选择,但随着 AI 软件开发迅速普及,代码质量又会随之受到怎样的影响?⻓期代码研究员 Adam Tornhill 就曾表示担忧,AI 辅助编程的主要挑战在于,它非常容易生成大量本来就不应该编写的代码。

根据最新研究,结果确实令人忧心。除了代码返工(即代码在添加后不久即遭删除)以外,重复代码比例升高等问题愈发严重。

主要是“添加代码”

自 2021 年 6 月推出 beta 版以来,GitHub Copilot 已经掀起 AI 编码的一波潮流。据公司 CEO Thomas Dohmke 介绍,该软件目前拥有超 100 万付费订阅开发者,已经让开发任务的速度提高了 55%。而且在启用 Copilot 的文件中,有 46% 的代码量是由 AI 生成。

根据来自开发者分析公司 GitClear 的研究,基于从 1.5 亿行已更改代码中收集到的数据,调查发现其中三分之二来自以匿名方式共享数据的私营企业,三分之一则来自谷歌、Facebook 及微软等技术大厂的开源项目。

这项研究着眼于经过添加、更新、删除、复制及移动的代码,并排除掉 GitClear 预先定义的“噪音”,例如被提交至多个分支的相同代码、空行及其他无意义的代码行。

但 GitClear 的研究将关注重点放在代码质量、而非数量上,并观察到 AI 助手主要是在提供“代码添加建议,但很少涉及代码的更新、移动或删除建议”。

研究人员还指出,“根据奖励设计,代码建议算法更倾向于提供最可能被采纳的建议”。尽管看似有理,但这明显忽略了代码简洁、易读等特性的重要意义。

GitClear 分析得出的代码更改趋势

对代码质量做精准衡量并不容易。研究人员也的确发现了一些变化趋势,表明代码的添加、删除、更新和复制 / 粘贴量大大提高,但代码移动比例却有所下降。他们还发现代码返工率大幅增加,从 2020 年的 3.3% 提升到目前的 7.1%。

一般来讲,代码移动是开发者进行代码重构的关键指标。具体来讲,就是在改进代码设计和结构的同时,确保不改变行为。

研究人员初步猜测这种趋势可能与 AI 编码技术的日益普及相关,但真实原因仍有待验证。他们还严厉批评了大量复制 / 粘贴代码的负面影响,称“这种对 AI 生成代码的无脑使用,将对代码的长期可维护性产生灾难性的影响”。

但过度使用复制 / 粘贴并不算是新问题。开发人员之所以这样做,很可能是因为无脑照搬比调整和重用现有代码更快、更省事,或者同一项目下多位开发者之间沟通不畅,抑或是从开发示例 / 编码问答网站上“抄袭”了太多内容。

GitClear 研究人员并没有具体讨论应如何解决调查中发现的这些问题,而是转向了“后续研究问题”。但他们也建议工程部门领导者应当“监督提交数据,并考虑其对未来产品维护造成的影响”。

这次研究可能在一定程度上让那些担心被 AI 工具取代的开发者们感到放心。代码分析公司 CodeScene 最近开展的一项 AI 代码重构研究也得出结论,“在编码环境中,AI 还远无法取代人类;当前的 AI 太容易出错,且完全不具备安全修改现有代码的水平。”

代码质量,谁更应该关注

可以肯定的是,AI 编码助手绝不会就此消失,反而是像一切新工具那样不断改进,并由开发者学习优化思路、改善使用效果。

其实,现在开发者们也已经意识到了代码质量的问题。在 GitHub 与 Wakefield Research 的调查报告中,当被调查的程序员被问到,“在积极使⽤⼈⼯智能时,应该根据哪些指标进⾏评估?”“代码质量”成为最关⼼的问题,

但另一方面,更应该关注代码质量问题的其实是公司领导层。

“我公司的领导曾经就动过用代码行数衡量每个人的工作量这种想法。研发人员每周代码量至少在 500 行以上,一个月必须在 2000 行以上。甚至他还搞来了第三方的测算软件,输入 git 账号来计算你的代码量。然后在一次技术会议上,全体组员忍无可忍的怼了技术总监。“知乎上有网友分享到。

一般公司考核代码量相对简单直观,但是代码质量考核就不那么容易了:满足用户需求,合理的进度、成本、功能关系,具备扩展性和灵活性等都不是那么可量化的指标。

但关于代码质量对业务影响的研究表明,一般来说,由于技术债务和糟糕的代码,公司平均浪费了开发人员 23%~ 42% 的时间。但似乎这还不够令人感到担忧,关于软件开发人员由于技术债务而导致的生产力损失的研究还发现,开发人员经常“被迫”引入新的技术债务,因为公司一直在用代码质量换取新功能等短期收益。

现在企业为“降本增效”引入 AI 辅助工具是可以理解的,但需要注意扬长避短、合理使用。根据 Alphacodium 的说法,大模型生成单个冗长函数的结果很差,代码通常包含错误或逻辑错误,大模型也往往在需要思考、推理并做出严格、重要决策的代码任务中遇到困难。

代码生成与其他对话不同,它需要匹配目标语言的精确语法、识别最佳路径和边缘情况、关注问题规范中的众多小细节,并解决其他特定于代码的问题和要求。因此,在自然语言生成中许多优化和技巧可能对代码任务无效。

如何让 AI 辅助编程更好地帮助开发者,也需要各方努力。

本文文字及图片出自 AI前线


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK