开发人员正在利用 GenAI 工具来简化遗留代码分析、提高生产力并改变软件开发格局。
现在,我们每天都会听到开发人员使用生成式 AI (GenAI)工具来减少编写新代码或重构旧代码所需的时间和费用的新故事。
就在前几天,Visa 数据平台总监Kautuk Pandey在 LinkedIn 上分享说,他使用ChatGPT和GitHub Copilot在一天之内对一个已有 8 年历史的 Java 代码库进行了逆向工程和记录。
Pandey 在其非常受欢迎的LinkedIn 帖子中解释说:“这是由已经离开公司的人编写的代码库,我团队中最年长的人进入系统大约 2 年。所以,我对这段代码的作用以及它为什么/如何做到这一点的背景绝对为零。将 ChatGPT 和 CoPilot 结合在一起,我就能够在一天之内将整个代码库“配对编程”为简单的设计文档。”
GenAI 程序员Pandey 承认,他有效地使用了 GenAI 工具来节省时间并避免繁重的工作。
“我认为我在理解和分解遗留代码库方面不会如此高效,”Pandey 写道。 “有了如今可用的 GenAI 解决方案,繁琐且无趣的任务变得更加容易,并且更容易忍受(或有趣)。”
该帖子引发了热烈的讨论——超过 120 条评论和超过 2,500 条反应,许多 IT 专业人士分享了使用人工智能工具提高生产力的类似经验。
例如,首席数据和分析官Ajai Govind Govindan表示,他最近对一些代码做了类似的事情。 “但是你在评论中提到的内容在这个过程中也非常重要——对如何用任何语言编写代码(如类对象、文件夹结构等)的基本理解,但更重要的是,好奇心强,”他在回复Pandey时写道。 “如果没有这一点,对于那些认为‘这不是我的工作’的人来说,任何数量的 GenAI 解决方案或进步都不会有所帮助。”
Omdia 分析师Brad Shimmin表示,事实上,GenAI 代码生成不仅可以开发新的解决方案,还可以维护完善的代码库。
消除技术债务企业 IT 面临的最大挑战之一是处理过去投资的技术债务。 Shimmin 说,在员工流动和 IT 优先事项的转变(例如我们所有 UX 工作从JavaScript转向React)之间,知识很容易丢失。这使得公司很难随着时间的推移维护和发展其代码库。
“幸运的是,GenAI 真正擅长的领域是消费和理解大量顺序信息,例如代码库,”Shimmin 告诉 The New Stack。 “有了这个基础, LLM可以轻松快速地帮助建立对代码库的理解,甚至可以为第一年开发人员可能没有意义的功能创建/改进文档。”
这可以帮助公司更好地保存他们的机构知识并减少他们的整体技术债务——这是一个令人高兴的情况,可能会为公司提供足够的空间来考虑潜在的重构或重新调整遗留代码的基础。
“当然,诀窍是选择一个LLM ,a)擅长代码生成、文档等; b) 通过微调或通过RAG [检索增强生成]和一个非常大的上下文窗口进行即时学习,对整个代码库进行训练; c) 完成所有这些工作时不会让公司面临任何类型的知识产权、安全或隐私风险。”Shimmin 说道。
Ryght GenAI 首席技术官Johnny Crupi表示:“遗留代码很好,但我们现在拥有和开发的所有内容都应该不断经过人工智能分析。”
成功案例Carelon的数据科学经理Tarun Gandotra表示,他使用 ChatGPT 在两小时内完成了四天的工作。 Gandotra 在回复 Pandey 时写道,这包括解析内容、从内容创建对象,然后从中创建一个基本的机器学习模型。
GenAI 咨询公司Coditas的联合创始人Shirish Bhatt在回复 Pandey 时表示,他的公司一直在帮助许多企业客户将遗留代码转换为现代技术堆栈,“借助我们由 GenAI 驱动的平台therix.ai,我们还生成业务需求文档和代码。这节省了大约 40% 的时间和金钱。”
Appy Pie的创始人Abhinav Girdhar写道:“利用 ChatGPT 和 CoPilot 等 GenAI 工具如此快速地对遗留代码库进行逆向工程和记录是一个游戏规则的改变者。看到这些技术如何改变繁琐的任务并使复杂的流程更易于管理,真是令人着迷。拥抱 GenAI 无疑是优化我们工作生产力和效率的前进之路。”
人工智能调查与此同时,GitHub 最近发布了2024 年人工智能编码工具对软件开发影响的调查结果。该调查包括来自美国、巴西、德国和印度的 2,000 名受访者,其中包括软件工程师、开发人员、程序员、数据科学家和软件设计师。
总体而言,该调查强调了人工智能在软件开发中日益增长的重要性,以及组织需要战略性地集成这些工具以最大限度地发挥其效益。
在AI工具使用方面,超过97%的受访者表示他们曾在某个时候使用过AI编码工具。大多数受访者表示,他们的公司鼓励或允许使用人工智能工具。 GitHub 首席运营官Kyle Daigle 在博客文章中写道,美国领先,88% 的受访者表示至少有一些公司支持人工智能的使用,而德国则最低,为 59%。
此外,调查显示,软件开发团队通过人工智能编码工具获得的好处比之前报道的要多。其中包括构建更安全的软件、提高代码质量、更好的测试用例生成以及更快的编程语言采用。Daigle写道,这最终转化为节省的时间,他们可以将这些时间用于更具战略性的任务。
Daigle 表示,美国 (90%) 和印度 (81%) 的大多数受访者以及巴西 (61%) 和德国 (60%) 的一半以上受访者表示,使用人工智能编码工具时,代码质量明显提高。
Stack Overflow 研究Stack Overflow 最近发布的 2024 年开发者调查显示,大多数开发者表示,明年,人工智能工具将更加集成,主要体现在他们记录代码 (81%)、测试代码 (80%) 和编写代码 (76) 的方式中。
Stack Overflow 显示,今年在开发过程中使用或计划使用 AI 工具的受访者中有 76% 比去年 (70%) 有所增加。今年也有更多的开发者在使用 AI 工具(去年为 62%,而去年为 44%)。
使用 ChatGPT 的开发人员数量是其第二接近的替代方案 GitHub Copilot 的两倍,分别为 82.1% 和 41.2%,其次是Google Gemini 和Microsoft Bing AI。
使用 GenAI 理解遗留代码事实上,理解遗留代码是 GenAI 的主要用例之一。
例如, BMC Software的 BMC AMI DevX Code Insights 工具可以揭示遗留 COBOL 代码中的结构和依赖关系。
Intellyx 分析师Jason Bloomberg告诉 The New Stack:“现在 BMC 已经添加了 GenAI,该工具还可以理解代码背后的业务逻辑,并用自然语言对其进行解释。” “这种功能既可以帮助开发人员实现遗留应用程序的现代化,又可以为遗留代码以及开发人员编写的新代码编写易于理解的文档。 BMC 能为 COBOL 做的事情,其他供应商也能用其他语言做。”
AWS 从 Java 8 迁移到 Java 17与此同时,8 月 1 日,亚马逊首席执行官Andy Jassy AWS 提供的一个重要证据显示,该公司使用自己的 Amazon Q Developer代理进行代码转换功能,在几个月内迁移了超过 30,000 个 Java JDK 应用程序,从而节省了成本经过 4,500 多年的开发工作,超过 1000 名开发人员(与手动升级相比)和性能改进每年节省 2.6 亿美元的成本。
Amazon Q Developer是一款由 GenAI 支持的软件开发助手。 AWS 人工智能开发人员体验总监Doug Seven告诉 The New Stack,该工具可以生成高度准确的代码,可以就该代码进行对话、测试、调试、故障排除、执行安全扫描和修复、过滤掉可能被认为是有偏见或不公平的代码,并且具有多步骤规划和推理能力,可以转换(例如,执行java版本升级)并实现根据开发人员请求生成的新代码。
由五名 Amazon 开发人员组成的团队使用 Amazon Q Code Transformation 在短短两天内将 1,000 个生产应用程序从 Java 8 升级到Java 17 。每次申请的平均时间不到10分钟。相比之下:过去升级一个应用程序需要两天时间,使用 Amazon Q Developer 的开发人员成功完成任务的可能性提高了 27%。
Seven 表示,为了确定 Q Developer 协助的应用程序升级的真正业务影响,AWS 通过查看迁移的 Java 依赖项数量来估算节省的时间。通常,开发人员可能需要一天或更多的时间来迁移一个依赖项,并且许多应用程序有数十个依赖项需要迁移。通过代码转换代理,许多依赖项可以在几分钟内迁移,从而节省大量时间。
为了估计节省的成本,AWS 研究了由于升级到 Java 17 实现的性能改进而能够从应用程序中删除的主机数量。这两个估计都是保守的,实际节省的成本和时间可能要大得多。
Seven 表示,除了将代码从一个 Java 版本迁移到另一个版本之外,该公司还收到了客户将代码从 .NET 迁移到 .NET Core 的请求。
人工智能给软件开发带来根本性改变“这是为了通过人工智能的帮助,让每个开发者成为‘一个开发团队’,”Seven 告诉 The New Stack。
不过,他强调,像AWS Q这样的AI工具并不是要取代开发人员,而是要转变他们的角色,提高生产力和业务价值创造速度。
“我认为任何人都不应该害怕人工智能,”Seven说。 “我认为真正令人着迷的是,作为一名终身开发人员,我们每天都在做很多事情,而这些事情是我们所做的事情中不太令人愉快的部分,并且我现在拥有这套人工智能代理,我可以利用这些为我做一些更平凡的工作,让我能够创造性地解决问题,这对我来说是最令人兴奋的部分。”
通过其代理,AWS 正在打开未来之门,让人工智能成为软件开发过程中非常重要的合作者。
“这将从根本上改变软件开发人员的工作方式以及企业未来通过软件实现价值的方式,”Seven 说。
可以肯定的是,正如 Pandey 在他的 LinkedIn 帖子中所说:“无论我们喜欢与否,GenAI 都会留下来,并从根本上改变我们的工作方式。我们越早接受这一点,我们就能越早在日常工作中使用这种超能力。”