AI-supported programming has arrived, as shown by the introduction and successes of large language models for code, such as Copilot/Codex (Github/OpenAI) and AlphaCode (DeepMind). Above human average performance on programming challenges is now possible. However, software engineering is much more than solving programming contests. Moving beyond code completion to AI-supported software engineering will require an AI system that can, among other things, understand how to avoid code smells, to follow language idioms, and eventually (maybe!) propose rational software designs. In this study, we explore the current limitations of AI-supported code completion tools like Copilot and offer a simple taxonomy for understanding the classification of AI-supported code completion tools in this space. We first perform an exploratory study on Copilot's code suggestions for language idioms and code smells. Copilot does not follow language idioms and avoid code smells in most of our test scenarios. We then conduct additional investigation to determine the current boundaries of AI-supported code completion tools like Copilot by introducing a taxonomy of software abstraction hierarchies where 'basic programming functionality' such as code compilation and syntax checking is at the least abstract level, software architecture analysis and design are at the most abstract level. We conclude by providing a discussion on challenges for future development of AI-supported code completion tools to reach the design level of abstraction in our taxonomy.
翻译:由 AI 支持的编程已经到来,这一点从Cocit/Codex (Github/ OpenAI) 和 AlphaCode (DepMind) 等大型代码语言模型的引入和成功可以看出。 在这项研究中,我们探索了AI 支持的代码完成工具(如Coitol/Codex (Github/OpenAI) 和 AlphaCode (DepMind) 的当前局限性,并提供了一个简单的分类学,以了解该空间内由 AI 支持的代码完成工具的分类。然而,软件工程比解决编程竞赛的难度要大得多。 将代码完成后的软件设计方法超越代码,避免在多数测试情景中出现代码的嗅觉。 然后我们进行更多的调查,以确定当前由AI 支持的代码完成工具的界限,比如Copilot, 引入软件最起码的分类的分类, 并提供一个用于在 IMBE AS AS 系统设计结构上进行系统化的分类分析,, 从而完成 完成 的系统 的系统设计 的代码,, 完成, 完成 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 代码 的 的 的 的 的 的 的 的 的 代码 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 代码 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的</s>