引言
随着人工智能技术的快速发展,AI 辅助编程工具如 GitHub Copilot、ChatGPT 和 Amazon CodeWhisperer 等已经成为程序员日常工作中的重要工具。这些工具不仅提高了编程效率,还改变了程序员的工作方式。本文将探讨 AI 辅助编程的现状、程序员如何使用这些工具、当前的痛点以及未来的发展方向。
现状:AI 辅助编程的使用情况
1. GitHub Copilot 的使用情况
GitHub Copilot 是目前最受欢迎的 AI 辅助编程工具之一,截至 2024 年 2 月,已有 130 万付费用户。在活跃使用中,Copilot 生成了 30-40% 的代码。
2. 程序员如何使用 AI 辅助工具
根据 [Barke et al, OOPSLA’23] 的研究,程序员在使用 AI 辅助工具时主要分为两种模式:加速(Acceleration) 和 探索(Exploration)。
-
加速模式:程序员已经有了明确的计划,AI 辅助工具帮助他们更快地实现目标。例如,程序员在编写一个函数时,Copilot 会自动补全当前逻辑单元(如一行代码)。
-
探索模式:程序员对某个 API 或库不熟悉,AI 辅助工具会提供多个可能的解决方案,程序员通过仔细检查和验证这些建议来选择最合适的方案。
3. 用户群体的差异
研究还发现,不同经验水平的程序员在使用 AI 辅助工具时的行为有所不同:
- 偶尔使用者:更多地处于探索模式,因为他们对工具和任务都不熟悉。
- 专业使用者:更多地处于加速模式,因为他们对任务和工具都有较高的掌握度。
此外,新用户(没有使用过 Copilot 的用户)更多地处于探索模式,而老用户则更多地处于加速模式。
痛点:程序员在使用 AI 辅助工具时的挑战
1. 验证生成的代码
程序员在使用 AI 辅助工具时,大部分时间都花在验证生成的代码上。根据 [Mozannar et al, CHI’24] 的研究,用户在验证建议时花费了 22.4% 的时间。验证代码的方式包括快速检查关键字、执行代码、查阅文档等。
2. 代码质量问题
尽管 AI 辅助工具生成了大量代码,但代码质量仍然是一个问题。[Kabir et al, CHI’24] 的研究发现,ChatGPT 生成的代码中有 52% 包含错误信息,25% 的代码是错误的。用户在 39% 的情况下忽略了这些错误。
3. 安全问题
在安全相关的编程任务中,AI 辅助工具生成的代码安全性较低。[Perry et al, CCS’23] 的研究表明,使用 AI 辅助工具的程序员生成的代码安全性较低,并且他们更倾向于相信 AI 生成的代码是安全的。
未来:如何让 AI 辅助工具更易用
1. 实时编程(Live Programming)
[Ferdowsifard et al, CHI’24] 提出的 Leap 是一种通过实时编程来验证 AI 生成代码的方法。通过实时执行代码,程序员可以更快地验证代码的正确性,从而降低验证成本。
用户研究结果
- 减少过度依赖和不足依赖:通过降低验证成本,Leap 减少了程序员对 AI 的过度依赖和不足依赖。
- 减少认知负荷:Leap 显著降低了程序员在验证代码时的认知负荷。
2. 现场解释(In-situ Explanations)
[Yan et al, CHI’24] 提出的 Ivie 是一种自动为生成的代码提供轻量级解释的方法。这些解释帮助程序员更好地理解代码的行为,从而减少认知负荷和分心。
用户研究结果
- 提高理解能力:使用 Ivie 的程序员在理解代码时表现更好。
- 减少认知负荷:程序员在使用 Ivie 时感到更少的分心和压力。
3. 探索建议空间
[Gero et al, CHI’24] 提出的方法通过展示多个建议来帮助程序员更好地选择合适的解决方案。这种方法不仅减少了过度依赖,还通过展示多个实例来帮助程序员更好地学习。
结论
AI 辅助编程工具已经深刻改变了程序员的工作方式,但仍然存在一些挑战,如代码验证、代码质量和安全性问题。未来的研究方向包括通过实时编程、现场解释和探索建议空间等方法来提高 AI 辅助工具的可用性和程序员的编程体验。
参考文献
- [Barke et al, OOPSLA’23]
- [Ferdowsifard et al, CHI’24]
- [Mozannar et al, CHI’24]
- [Kabir et al, CHI’24]
- [Perry et al, CCS’23]
- [Yan et al, CHI’24]
- [Gero et al, CHI’24]
通过这些研究和工具的不断发展,AI 辅助编程的未来将更加智能化和人性化,帮助程序员更高效地完成任务。
后台发送 600005
,获取讲义PPT。
公众号 | FunIO
微信搜一搜 “funio”,发现更多精彩内容。
个人博客 | blog.boringhex.top