写点什么

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

  • 2024-01-25
    北京
  • 本文字数:2259 字

    阅读完需:约 7 分钟

大小:1.06M时长:06:09
代码屎山噩梦加速来袭,都是AI生成代码的锅?

“周边很多程度员一直在使用,都是用上就离不开了!”知乎上,在“大家现在使用哪些 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 辅助编程更好地帮助开发者,也需要各方努力。

 

参考链接:

 

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

https://www.zhihu.com/question/640036429

https://zhuanlan.zhihu.com/p/626643788

https://github.blog/2023-06-13-survey-reveals-ais-impact-on-the-developer-experience/

2024-01-25 15:006744

评论 1 条评论

发布
用户头像
AI辅助编程肯定是进步,但仅仅是增加代码只会恶化系统可理解性。系统结构的搭建和具体功能模块的编写应该使用不同的技术,不幸的是,现在并没有区分。系统结构搭建应该用流程图等可视化工具。我在这篇文章里面做了解释:https://xie.infoq.cn/article/704602cda30fc8f608ccaf494
2024-01-28 13:35 · 上海
回复
没有更多了
发现更多内容

SPI在Java中的实现与应用 | 京东物流技术团队

京东科技开发者

Java spi 京东云 企业号9月PK榜

跨平台混合应用:用户和开发者的新选择

没有用户名丶

MGR新节点RECOVERING状态的分析与解决:caching_sha2_password验证插件的影响

GreatSQL

greatsql mgr

2024第八届浙江智慧城市与智能建筑产品博览会

AIOTE智博会

智慧城市展 智能建筑展

从实时监控到智能洞察:Grafana 和 CnosDB 的无限潜力

CnosDB

时序数据库 开源社区 CnosDB

如何赋能企业数字化转型?华为云有妙招

YG科技

与中小企业共生共赢,华为云B2B企业节来了

YG科技

ARTS 打卡 第一周,初试ARTS

三掌柜

ARTS 打卡计划

阿里云PAI-灵骏大模型训练工具Pai-Megatron-Patch正式开源!

阿里云大数据AI技术

机器学习 阿里云

使用代理IP可以解决哪些网络问题?代理ip是怎么优化网络游戏玩家的游戏体验的?

巨量HTTP

代理IP

2024第二十三届浙江国际智能楼宇技术与智慧安防产品展览会

AIOTE智博会

智慧楼宇展 安防展 智慧安防展

分布式锁的3种实现!附代码

王磊

Java

企业综合信息化,人力资源管理,培训考学管理,电子采购(源码系统)

金陵老街

java;

如何实现MongoDB副本集实例间的数据迁移

NineData

数据库 mongodb 复制 迁移 NineData

分库表数据倾斜的处理让我联想到了AKF模型 | 京东云技术团队

京东科技开发者

数据库 京东云 企业号9月PK榜

使用 NGINX Unit 实施应用隔离

NGINX开源社区

Unit 应用隔离

苹果电脑电量显示软件 Magic Battery中文最新版

mac大玩家j

Mac 软件 电池管理工具 电池软件

泄露个人信息的2300余名“内鬼”被抓?

极盾科技

数据安全

Scrum Master,这九个问题你问了吗?

敏捷开发

项目管理 敏捷开发 团队协作 Scrum Master

高性能MySQL实战(三):性能优化 | 京东物流技术团队

京东科技开发者

京东云 企业号9月PK榜

星耀数字中国,先要存下宇宙山河

脑极体

存储

HarmonyOS Codelab 优秀样例——溪村小镇(ArkTS)

HarmonyOS开发者

HarmonyOS

828 B2B企业节,华为云如何提升生态合作伙伴的综合竞争力?

YG科技

初露头角!Walrus入选服贸会“数智影响力”数字化转型创新案例

SEAL安全

企业数字化转型 数智化 企业号9月PK榜 中国国际服务贸易协会

Mac电脑最新2023 Xmind 激活中文版

胖墩儿不胖y

思维导图 Mac软件 mac思维导图 思维导图软件

“源聚一堂”开源技术沙龙济南站顺利举办

inBuilder低代码平台

开源 低代码

代码屎山噩梦加速来袭,都是AI生成代码的锅?_AI&大模型_核子可乐_InfoQ精选文章