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