
人工智能在代码重构方面还有很长的路要走
如果没有熟练的开发人员监督人工智能编码助手,他们很可能会破坏你的代码而不是编写它。
什么是托管检测和响应 (MDR) ? |
什么是端点检测和响应 (EDR) ? |
数千亿现金如何在飞机上被洗钱 |
勒索诊所患者的男子被判六年徒刑 |
非法出售客户位置数据的无线运营商被处以 2 亿美元罚款 |
微信搜索关注公众号网络研究观,获取更多信息。
在急于采用编码助手为开发人员生成新代码的过程中,我们并没有花太多时间询问该代码是否有用。从某些方面来看,答案显然是否定的。根据 GitClear 的分析,“2023 年期间生成的代码……类似于流动贡献者的代码”,这可能是由于编码助手的使用增加所致。
这并不是说编码助手不好。他们可以提供难以置信的帮助。问题是我们需要投入更多时间来找出将生成式人工智能应用于代码重构等任务的方法,人工智能可以提供帮助,但可能并不总是以我们期望的方式提供帮助。
人们对编码助手的关注主要集中在它们如何提高开发人员的吞吐量。不幸的是,这很少是正确的衡量标准。毕竟,开发人员实际上花在编写新代码上的时间相对较少。开发人员高达 70% 的时间花在理解现有系统上,而不是向其中添加代码(这可能占她时间的 5%)。
开发速度不仅是一个错误的衡量标准,而且还会分散开发人员的注意力,让他们无法从代码中抽身出来,对首先要编写的代码进行更少、更好的选择。
还有什么比开发速度更重要呢?其一是可读性。代码库的可读性是能够快速进行更改的关键,因为您需要能够理解代码才能有效地更改它。编码助手虽然有助于提高开发速度,但在解释代码或用更熟悉的编程语言重写代码方面可能更有帮助,从而赋予“可读性”新的含义。
另一件重要的事情是重构,它通过对代码进行小的更改而不影响其外部行为来降低复杂性并提高代码的可读性。不幸的是,人工智能在这方面的帮助不大。 CodeScene 使用来自 OpenAI、Google、Meta 等的大型语言模型(LLM) 来重构代码,但发现 30% 的情况下 AI 无法改进代码。
更糟糕的是,三分之二的时间里,人工智能实际上破坏了单元文本,这表明它不是重构代码,而是以微妙但关键的方式改变代码的外部行为(“非常奇怪的事情,比如移动‘这个’”引用提取的函数,这会改变其含义,[或删除]整个分支,”等)。
CodeScene 性能绝对最佳的 AI 仅在 37% 的时间内正确重构了代码。其余时间人工智能会重构错误或者根本没有改进代码。
这不是开发者可以信任的命中率。
人工智能现在让编写大量原本不应该编写的代码变得如此容易。我们不能真正依赖人工智能为我们编写代码或改进现有代码(尤其是具有运行数百行代码的函数的遗留代码:你将其填充到一个大型语言模型中,它会崩溃,)。相反,我们需要寻找其他方法来使用人工智能。
关键是让开发者与人工智能保持一致,而不是试图用人工智能取代他们。我们生成新代码的速度越快,团队就越难理解该代码,过程中,这个主题不断出现。也就是说,需要让聪明的开发人员参与评估和调整人工智能的过程。无论开发人员有多担心他们的机器人作品会接管,但这不会很快发生。
事实上,在很多方面,随着人工智能使用的增加,人比以往任何时候都更加重要。尽管您可能想让人工智能为您进行开发,但现实是它不能。强大的开发人员,加上传统的帮助,例如 linter 工具、代码审查(以保持对代码的熟悉程度)等,对于有效使用人工智能至关重要。
考虑到人工智能工具加速代码的倾向,我们最需要的是放慢速度。现在是在经验丰富的开发人员的指导下找出人工智能可以在哪些方面帮助改进代码开发中的离散流程的好时机。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)