首页 > 其他分享 >AI生成代码加速代码屎山噩梦?

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

时间:2024-02-01 17:02:23浏览次数:30  
标签:编码 开发人员 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 辅助编程更好地帮助开发者需要各方共同的努力。

标签:编码,开发人员,AI,代码,生成,开发者,噩梦
From: https://blog.51cto.com/u_15327851/9534444

相关文章

  • 借助可视化表单搭建企业级低代码平台,实现流程化办公!
    实现高效率的流程化办公,利用低代码技术平台可以为企业带来高效益的办公目的。可视化表单是较为流行的办公利器,流辰信息经验足、产品丰富、服务品质好,可以为更多的企业搭建专属于企业的低代码技术平台,创造高效益的办公。1、低代码技术平台的市场价值什么是低代码平台?它究竟有什么......
  • 代码简洁-列表推导式
    importrequestsimportpandasaspdfrom公用.业务.loginimportLogInmytoken=LogIn().take_login()headers={'Content-type':'application/json','Accept':'application/json',&#......
  • 安装MySQL出现由于找不到vcruntime140_1.dll,无法继续执行代码的提示
    问题描述:在安装MySQL服务的时候,执行安装命令提示如下的错误信息。解决方法:通过分析可以知道,是由于缺少了vcruntime140_1.dll动态链接库文件,这是windows缺少vc_redist.x64.exe程序导致的服务安装错误,与我们要安装的MySQL服务并没有关系。(如果您的安装过VS类型的工具,就不会提示该......
  • Vulkan学习苦旅05:马不停蹄地渲染(创建交换链VkSwapchainKHR)
    通俗地说,渲染图像就是为图像的每个像素选择合适的颜色。例如,如果图像的分辨率为1920x1080,表示图像中有1920x1080个像素,渲染的过程,就是为每个位置的像素计算出合适的颜色。具体来说,假设每种颜色具有RGBA四个通道,且每个通道用1个字节表示(可以表示255种不同的情况),那么图像应当占据192......
  • 从零搭建Vue3 + Typescript + Pinia + Vite + Tailwind CSS + Element Plus开发脚手架
    项目代码以上传至码云,项目地址:https://gitee.com/breezefaith/vue-ts-scaffold目录前言脚手架技术栈简介vue3TypeScriptPiniaTailwindCSSElementPlusvite详细步骤Node.js安装创建以typescript开发的vue3工程集成Pinia安装pinia修改main.ts创建一个store在组件中使用store集......
  • 网站弹出促销海报动画效果代码(带关闭按钮)
    在促销海报刚弹出时会抖动一两下<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>金币促销活动<......
  • 添加代码运行登录注册页,并为其添加一些样式,和调用资源文件
    使用PyQt5(PySide2)+SQLAlchemy做一个登录注册页(二)本文将介绍自己用PyQt5+SQLAlchemy做的一个登录注册页,使用邮箱接收验证码,本文介绍是前后端未分离的实现方式,后续将出一个前后端分离的,你可以将PyQt5改为PySide2以获得更宽松的开源协议本文由于涉及到的代码较多,将会是一......
  • pair
    为模板类,用于表示一对值的组合。位于<utility>头文件中如pair<int,string>pa(3,"Mike");pair可以将两个值组合,并进行传参,返回等操作。pair的定义与结构pair的成员变量可以为结构体类型pair有两个成员变量first与second例:pair<int,double>p1(1,3.14);pair<char,stri......
  • 代码随想录 day37 单调递增的数字 监控二叉树
    单调递增的数字只想到暴力解法然后超时这里思路是如果从后往前发现不是递增序列那就把前一位--后一位数字变成9然后维护这个变成9的坐标遍历完后把后面的也全部变成9这个对现在的我来说太难了先贴段代码理解一下吧classSolution{intres=0;publicintminCam......
  • 引领AI创意教育新浪潮,瑞云AIGC实训平台解决方案来了
    过去的2023年,AI(人工智能)成为了年度科技圈关键词,各行各业都在AI化,据统计,AIGC市场规模预计到2030年将达到万亿级别,这不仅是市场的趋势,更是创新的机遇。教育行业更是如此,许多高校和职校引入了AIGC的课程,一些艺术和设计学院开始将AIGC技术融入课程中,让学生通过实践学习如何使用AI生......