AI技术债务,使用AI编写代码的风险与挑战

vipkang vipkang 2025-03-05 20:00:01 科技 阅读: 900
摘要: 摘要:使用人工智能(AI)技术可能会加重技术债务,因为AI在编写代码方面的应用存在一些潜在问题。虽然AI可以自动化一些编程任务,但它不能完全替代人类程序员的判断和创造力。过度依赖AI编写代码可能会导致代码质量下降,难以维护和调试,并可能增加潜在的安全风险。应该谨慎使用AI辅助编程工具,并结合人类程序员的技能和经验来保证代码的质量和安全性。
摘要:使用人工智能(AI)技术可能会加重技术债务,因为AI在编写代码方面的应用存在一些潜在问题。虽然AI可以自动化一些编程任务,但它不能完全替代人类程序员的判断和创造力。过度依赖AI编写代码可能会导致代码质量下降,难以维护和调试,并可能增加潜在的安全风险。应该谨慎使用AI辅助编程工具,并结合人类程序员的技能和经验来保证代码的质量和安全性。

“程序员”这个职业将不复存在,这样的言论在过去两年随着生成式人工智能的不断进化、AI开始能够代替人类写代码,而大行其道。从百度、阿里到谷歌、Meta,AI生成代码也成为了一众科技大厂彰显AI能力的“示范田”。

AI加重技术债务,用AI写代码可能不是一件好事

那么程序员真的开发出了一个可能会“优化”自己的终结者吗?专门从事代码质量分析和改进的GitClear公司在最新报告中,给广大程序员群体吃了一颗定心丸。在这篇题为《人工智能生成的代码如何加剧技术债务》的文章中揭示了这样的现象,即随着AI代码工具的流行,代码重复率上升和质量下降的问题日益严重。


在2024年,GitClear跟踪到五行及以上代码块重复相邻代码的频率同比增加了8倍,同样是在2024年,46%的的代码变更是新增行,复制粘贴的行数超过了移动行数。据悉,GitClear提出的“移动行数”是用于跟踪代码重组的一个指标,这样的数据表明代码复用和重构正在减少。

AI加重技术债务,用AI写代码可能不是一件好事

简而言之,GitClear方面发现AI编程工具并不存在“代码复用”,而是只会一味新增代码,也就是说AI是“Ctrl C+Ctrl V”的好手,往往会直接复制粘贴写好功能的代码。作为对比,“不要重复自己”(DRY)则是一种被人类程序员广泛接受的编程原理,它要求代码中没有重复的部分。


虽然AI编程工具加快了代码的生成速度,却无法避免代码质量的下降,以至于让使用AI编程的项目变得更加难以维护。不受控制的AI生成代码将会给项目的长期维护带来负担,特别是对于那些使用时间较长的代码库更是如此。如今不仅仅是GitClear,就连超过1/4的新代码已经由AI生成的谷歌,也意识到了AI编程工具的负面性。

AI加重技术债务,用AI写代码可能不是一件好事

每年都会发布一份关于软件开发、部署、交付、安全性、文化和组织变革行业现状报告的谷歌旗下DevOps调研与研究团队(DORA),在最新的DORA 2024报告中就指出,研究人员发现AI编程采用率的提高使得软件交付稳定性降低了7.2%,交付吞吐量降低了1.5%。


DORA团队负责人Nathen Harvey表示,“我们看到采用更多人工智能功能的工程师或团队,其工作流程时间更短、个人生产力水平更高,然而我们没有看到这种生产力和时间以及流程,在能够快速安全地交付软件方面产生良好的下游影响。”

AI加重技术债务,用AI写代码可能不是一件好事

如果说大公司、行业机构的说法不那么接地气,其实也有具体的开发者抱怨AI编程。从去年夏季,也就是AI编程工具GitHub Copilot、Cursor‌被大规模应用后,海外技术社区HakerNews几乎同步就出现了大量吐槽AI代码的帖子。


比如名为Tacitus的开发者就表示,在他为客户解决技术问题的过程中发现,有相当多的问题源自于客户使用了ChatGPT等AI工具生成的代码。由于AI幻觉的存在,这类代码往往会出现各种低级错误,例如访问不存在的端口,或是试图从不存在的API响应中读取数据。

AI加重技术债务,用AI写代码可能不是一件好事

这一类错误属于典型的人类程序员一眼就能发现,但毫无编程知识的人则完全无法察觉。从某种意义来说,Tacitus遇到的问题以及他的抱怨,恰恰就指出了当下AI编程最大的命门,那就是在不了解编程的情况下使用生成式AI写代码,往往不会带来生产力的提升。


更为致命的一点,是AI本身的高技术属性是极具迷惑性的,很容易让使用者通过即时、便捷的体验产生“知识膨胀”的错觉,以至于让使用者盲目相信AI的输出。如此一来,一个更加严重的问题就会浮出水面,那就是AI能不能担责?

AI加重技术债务,用AI写代码可能不是一件好事

从目前业界认可的AI伦理来看,AI显然是不能背锅的。那么AI幻觉的存在导致AI编程工具输出的代码不稳定,就需要人类程序员来维护和检查。可是如果AI生成的内容都需要人工再校核一遍,AI也就没有意义了,因为核校不仅是对数据和来源,还包括了编程思路。


如果AI生成的代码需要人工来核校,又与“重复造轮子”有什么区别?GitClear在相关报告中就悲观地预测,“如果开发者的生产力继续通过提交数量或新增行数来衡量,AI生成的代码可维护性下降将会加剧”。由AI生成的代码缺乏可维护性,就将加重开发者的运营负担,进而带来负面的财务影响。

AI加重技术债务,用AI写代码可能不是一件好事

AI编程的支持者认为,AI将人类程序员从繁琐编写代码的工作中解放出来,使得他们能够专注于更具创造性的工作,也就是用少数有AI辅助的高水平程序员替代普通程序员。毕竟众所周知,创造性的工作往往只需要少数天赋型选手负责,以往的科技产品、互联网服务很多就都是几位大神带着一批普通人搞出来的。


所以未来的编程或者说软硬件开发,可能就是“大神”来引流潮流,而打下手或许就会从普通人变成AI。然而GitClear、谷歌DORA,乃至HakerNews如今指出了AI靠不住。所以除非彻底解决AI的幻觉问题,让AI不再虚构不存在的事实,编程工作交给AI才具有可行性。

AI加重技术债务,用AI写代码可能不是一件好事

现在的AI编程似乎更类似于寅吃卯粮,由其所产生的技术债务有朝一日终归是要出清的。


【本文图片来自网络】

其他相关
IDEA的Local History,全方位记录代码版本修改历程

IDEA的Local History,全方位记录代码版本修改历程

作者: 站长小白 时间:2025-04-22 阅读: 807
IDEA的Local History功能能够全面记录所有版本的修改情况,包括文件内容的增删改查等所有操作,为用户提供便捷的历史记录查询和管理功能,该功能可以帮助用户轻松追踪代码变更历史,提高开发效率,避免因误操作或系统故障等原因导致的数据丢失问题,通过Local History,用户可以快速恢复到之前的版本,有效保障代码的安全性和稳定性。...
VB程序设计详解,四步教程与代码例题解析指南

VB程序设计详解,四步教程与代码例题解析指南

作者: vipkang 时间:2025-04-22 阅读: 966
本教程详细介绍了VB程序设计的基本概念、步骤和代码实践,通过四步教程,读者可以逐步掌握VB编程的核心知识,包括语言基础、控制结构、函数和过程等,教程还提供了丰富的代码例题解析,帮助初学者更好地理解和应用所学知识,通过学习本教程,读者可以快速入门VB编程,为后续的编程学习和项目开发打下坚实的基础。...
Python代码执行全过程详解,从编写到运行

Python代码执行全过程详解,从编写到运行

作者: 站长小白 时间:2025-04-22 阅读: 568
Python代码执行步骤摘要如下:,编写Python代码,通过文本编辑器或集成开发环境(IDE)进行编写,保存代码文件,选择适当的文件名和保存路径,启动Python解释器或编译器,导入所需的库和模块,运行代码,检查代码中的语法错误和逻辑错误,调试代码,解决出现的问题,成功运行Python代码并得到预期结果,整个过程需要编程经验和技能,以及对Python语言和工具的不断学习和实践。...
贷款死亡债务处理全攻略,遗产与债务的挑战应对指南

贷款死亡债务处理全攻略,遗产与债务的挑战应对指南

作者: vipkang 时间:2025-04-22 阅读: 886
本指南旨在帮助处理贷款死亡债务问题,应对遗产与债务的挑战,内容涵盖遗产管理和债务清偿的基本原则,指导如何妥善处理已故借款人的财务遗留问题,通过本指南,读者能够了解相关法律规定,学会有效应对遗产管理和债务纠纷,保障继承人权益,妥善处理债务,避免不必要的法律和经济风险。...
JavaScript代码运行详解指南

JavaScript代码运行详解指南

作者: 站长小白 时间:2025-04-22 阅读: 588
本文详细阐述了JavaScript代码的运行方法,首先介绍了JavaScript的运行环境,包括浏览器和服务器端环境,阐述了JavaScript代码的解析和执行过程,包括词法分析、语法分析、生成抽象语法树等步骤,还介绍了JavaScript引擎的工作原理和优化技术,如即时编译技术和热点优化等,通过实例演示了如何编写高效的JavaScript代码,以提高代码运行效率,本文旨在为开发者提供全面的JavaScript代码运行方法指南。...
VB程序设计详解,四步教程与代码例题解析指南

VB程序设计详解,四步教程与代码例题解析指南

作者: hao123 时间:2025-04-22 阅读: 518
本教程详细介绍了VB程序设计的基本概念、步骤和代码实践,通过四步教程,读者可以逐步掌握VB编程的核心知识,包括语言基础、控制结构、函数和过程等,教程还提供了丰富的代码例题解析,帮助初学者更好地理解和应用所学知识,通过学习本教程,读者可以快速入门VB编程,为后续的编程学习和项目开发打下坚实的基础。...

年度爆文