AI生成代码加速代码屎山噩梦?

简介: 如今,许多程序员选择使用AI来辅助编程,但是随着AI软件开发的快速普及,有关代码质量的担忧越发凸显。

如今,许多程序员选择使用AI来辅助编程,但是随着AI软件开发的快速普及,有关代码质量的担忧越发凸显。长期从事代码研究的Adam Tornhill曾表示,AI辅助编程所面临的主要挑战是,它很容易生成大量原本无需编写的代码。

根据最新的研究,结果确实令人担忧。除了代码反复修改后被删除的问题,重复代码比例也变得越来越严重。

GitHub Copilot 自推出 beta 版以来,迅速席卷了 AI 编码领域。根据公司首席执行官 Thomas Dohmke 的介绍,该软件目前已经吸引了超过一百万付费订阅开发者,有效提高了开发任务的速度达到55%。此外,在启用Copilot的文件中,有46%的代码量是由人工智能生成的。

根据开发者分析公司GitClear的研究,在对1.5亿行已更改代码进行数据收集后发现,三分之二的数据来自私营企业以匿名方式共享的数据,而三分之一的数据则来自谷歌、Facebook和微软等技术大厂的开源项目。

该研究的重点是对经过修改、更新、删除、复制和移动的代码进行处理,同时排除掉GitClear事先定义的“噪音”,比如同一段代码被提交到多个分支、空行和其他没有意义的代码行。
然而,GitClear 的研究集中在代码质量而非代码数量,并且发现 AI 助手主要提供“代码添加建议”,但很少提供代码更新、移动或删除建议。

要精确衡量代码质量并不容易。研究者们也确实发现了一些变化趋势,显示代码的添加、删除、更新和复制/粘贴量都有显著增加,但是代码移动的比例则有所减少。他们还发现代码重复率大幅增加,从2020年的3.3%提高到目前的7.1%。

通常来说,代码移动是开发者重构代码时的一个重要标准。具体来说,就是要在改善代码设计和结构的同时,确保不会改变原有的功能。

研究人员初步推测这一趋势或许与 AI 编码技术的迅速普及有关,但具体原因仍需进一步验证。他们严厉批评了过度使用复制/粘贴代码的负面影响,并指出:“这种对 AI 生成代码的盲目使用,将对代码的长期可维护性产生灾难性的影响。”

然而,过度依赖复制粘贴并不是一个新的问题。开发人员之所以这样做,可能是因为无需调整和重用现有代码,直接复制粘贴更快捷省事。或者可能是由于多个开发者之间的沟通不畅,或者过度从开发示例和编码问答网站上抄袭内容。

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

这项研究可能会在一定程度上安抚那些担心被人工智能工具取代的开发者们。代码分析公司CodeScene最近进行的一项人工智能代码重构研究也得出了结论,“在编码环境中,人工智能远远不能替代人类。”

但可以确定的是,AI 编码助手绝对不会消失,相反它会像所有新工具一样不断进行改进,开发者会学习如何优化它的思路,提高它的使用效果。实际上,现在的开发者们已经开始认识到代码质量的重要性。根据GitHub和Wakefield Research的调查报告显示,在被调查的程序员中,当被问及“在积极使用人工智能时,应该根据哪些指标进行评估?”时,“代码质量”被认为是最重要的问题。

最近的研究显示,代码质量对业务产生的负面影响不可忽视。根据这些研究,通常情况下,由于技术债务和糟糕的代码,公司的开发人员平均浪费了23%~42%的时间。这一结果足以引起我们的关注。另外,有关软件开发人员由于技术债务而导致的生产力损失的研究还指出,开发人员经常不得不引入新的技术债务,因为公司一直在通过牺牲代码质量来换取短期的收益,如新增功能等。

因此,提高代码的可读性和可维护性,注重代码的健壮性和性能优化,确保代码的安全性。代码遵循如命名规范、注释规范、代码风格统一等规范和最佳实践,依然是开发人员需要攻克的课题。而为了达到这些要求,开发人员需要具备扎实的编码能力、良好的团队合作精神以及使用正确的AI编码助手,从而辅助自己高效实现高质量代码输出。

以飞算推出的专注AI生成Java函数的FuncGPT(慧函数)为例,集成多年的编程现场大数据,经过数百万行代码训练,帮助开发人员实现通过自然语言即可实时生成高质量、高可读性的Java函数代码。生成代码可直接复制到IDEA。在代码质量方面,由于FuncGPT(慧函数)具备强大的自然语言处理能力,能够准确理解用户对函数的描述和要求,降低了开发沟通成本和理解难度,同时因为经过代码编写最佳实践和大规模机器联合训练,减少了由于人的疏忽和语法错误引起的Bug,因此生成的代码质量有保证。多次内部测试显示,相较市面上ChatGPT等大模型,FuncGPT(慧函数)生成的代码质量更高,更便于开发人员直接使用。

目前,企业引入人工智能辅助工具来实现“降本增效”是可以理解的,但我们需要谨慎运用,充分发挥优势、避免劣势。让 AI 辅助编程更好地帮助开发者需要各方共同的努力。

相关文章
|
11天前
|
人工智能 Java 测试技术
低成本工程实践-AI帮我写代码做需求
本文主要讲述,以“无需训练模型”的方式实现:AI智能分析功能需求、写代码、review代码解决特定业务问题的实践过程
低成本工程实践-AI帮我写代码做需求
|
2月前
|
人工智能 监控 算法
智能时代的伦理困境:AI技术的道德边界探索人工智能在教育领域的革新之路未来编程:人工智能与代码共生的新篇章
【8月更文挑战第21天】在人工智能(AI)技术飞速发展的今天,我们正处在一个前所未有的科技变革时期。随着AI技术的深入人类生活的方方面面,它不仅带来了便利和效率的提升,同时也引发了关于道德和伦理的深刻讨论。本文将探讨AI技术发展中遇到的伦理挑战,以及如何建立合理的道德框架来指导AI的未来应用,确保技术进步与人类社会价值观的和谐共存。
229 61
|
8天前
|
人工智能 机器人 Serverless
不用一行代码,如何10分钟快速打造AI助手?
推荐免费下载《10分钟打造专属AI助手》电子书,助力快速搭建AI客服系统。 本文介绍了如何在10分钟内构建能主动提问的智能导购系统,提升客户体验。通过阿里云平台,无需编码即可创建具备大模型能力的AI机器人,实现7x24小时商品推荐与客户服务。文中详细描述了从创建函数计算应用、访问示例网站到验证智能导购效果的全过程,并提供了关键代码示例。此外,还介绍了如何将智能导购集成到生产环境的方法,包括修改知识库和源码以适配具体产品。
119 13
|
10天前
|
人工智能 安全 开发者
由于安全风险,安全领导者考虑禁止用AI生成代码
由于安全风险,安全领导者考虑禁止用AI生成代码
|
10天前
|
人工智能 IDE Java
MarsCode AI 一款免费的代码辅助工具,值得一试
MarsCode是由字节跳动旗下公司推出的AI编程工具,旨在提升编码效率和质量。它既是一个云端集成开发环境(IDE),也支持作为VS Code和JetBrains等IDE的智能扩展,提供代码补全、生成、优化等功能,并支持多种编程语言。通过AI助手,MarsCode帮助开发者减少重复劳动,提高代码质量和可维护性,同时支持跨平台使用,为开发者带来便捷高效的编程体验。
|
20天前
|
人工智能
AI设计自己,代码造物主已来!UBC华人一作首提ADAS,数学能力暴涨25.9%
【9月更文挑战第15天】近年来,人工智能领域取得了显著进展,但智能体系统的设计仍需大量人力与专业知识。为解决这一问题,UBC研究人员提出了“自动智能体系统设计(ADAS)”新方法,通过基于代码的元智能体实现智能体系统的自动化设计与优化。实验结果表明,ADAS设计的智能体在多个领域中表现优异,尤其在阅读理解和数学任务上取得了显著提升。尽管如此,ADAS仍面临安全性、可扩展性和效率等挑战,需进一步研究解决。论文详情见链接:https://arxiv.org/pdf/2408.08435。
27 4
|
24天前
|
存储 人工智能 前端开发
AI 网关零代码解决 AI 幻觉问题
本文主要介绍了 AI Agent 的背景,概念,探讨了 AI Agent 网关插件的使用方法,效果以及实现原理。
|
2月前
|
存储 人工智能 前端开发
AI 网关零代码解决 AI 幻觉问题
本文主要介绍了 AI Agent 的背景,概念,探讨了 AI Agent 网关插件的使用方法,效果以及实现原理。
18708 15
|
27天前
|
人工智能 计算机视觉
AI计算机视觉笔记十五:编写检测的yolov5测试代码
该文为原创文章,如需转载,请注明出处。本文作者在成功运行 `detect.py` 后,因代码难以理解而编写了一个简易测试程序,用于加载YOLOv5模型并检测图像中的对象,特别是“人”类目标。代码实现了从摄像头或图片读取帧、进行颜色转换,并利用YOLOv5进行推理,最后将检测框和置信度绘制在输出图像上,并保存为 `result.jpg`。如果缺少某些模块,可使用 `pip install` 安装。如涉及版权问题或需获取完整代码,请联系作者。
|
2月前
|
SQL 人工智能 JavaScript
使用Raccoon AI写代码,同事又来围观
使用Raccoon AI写代码,同事又来围观

热门文章

最新文章

下一篇
无影云桌面