With the advances in Machine Learning, there is a growing interest in AI-enabled tools for autocompleting source code. GitHub Copilot, also referred to as the "AI Pair Programmer", has trained on billions of lines of open source GitHub code, and is one of such tools that has been increasingly used since its launch on June 2021. However, little effort has been devoted to understand the practices and challenges of using Copilot in programming with auto-completed source code. To this end, we conducted an empirical study by collecting and analyzing the data from Stack Overflow (SO) and GitHub Discussions. More specifically, we searched and manually collected 169 SO posts and 655 GitHub discussions related to the usage of Copilot. We identified the programming languages, IDEs, technologies used with Copilot, functions implemented, benefits, limitations, and challenges when using Copilot. The results show that when practitioners use Copilot: (1) The major programming languages used with Copilot are JavaScript and Python, (2) the main IDE used with Copilot is Visual Studio Code, (3) the most common used technology with Copilot is Node.js, (4) the leading function implemented by Copilot is data processing, (5) the significant benefit of using Copilot is useful code generation, and (6) the main limitation encountered by practitioners when using Copilot is difficulty of integration. Our results suggest that using Copilot is like a double-edged sword, which requires developers to carefully consider various aspects when deciding whether or not to use it. Our study provides empirically grounded foundations and basis for future research on the role of Copilot as an AI pair programmer in software development.
翻译:随着机器学习的进展,对自动完成源代码的由AI驱动的工具的兴趣日益浓厚。 GitHub Copolit, 也称为“AI Pair 程序程序员 ”, 已经对数十亿条开源源代码GitHub 代码进行了培训, 并且是自2021年6月启动以来使用越来越多的此类工具之一。然而,在使用自动完成源代码的编程中,很少努力理解使用Copil 的做法和挑战。为此,我们开展了一项经验性研究,收集和分析了Stack Overplow (SO) 和 GitHub 讨论的数据。更具体地说,我们搜索并手工收集了169个SO(A AI Pair pair 程序) 和655 GitHub 讨论 。我们确定了自2021年6月启动以来, 开源代码使用的程序语言、 IDE、 使用的技术、 功能、 效益、 限制以及挑战。结果显示,当操作人员使用双轨(Javas) 和 Pythson 使用主要 IDE 用于视觉代码时, 研究时, 最常用的技术是使用Cilver, 使用Cilverviolviolde,, 当使用Cildolde 要求使用 Colviolde 运行 使用一个主要 的操作程序, 当使用Cilviolde 的操作员 的操作员,, 使用Ctorvicolviolviolviolvicil 使用我们使用Colvicil 的操作员 的操作程序使用一个大,,, 的操作员,, 的操作 使用一个主要的操作,,, 使用一个主要的操作员 。</s>