要約
Copilot/Codex (Github/OpenAI) や AlphaCode (DeepMind) などの大規模なコード言語モデルの導入と成功が示すように、AI をサポートするプログラミングが登場しました。
プログラミングの課題に対する人間の平均以上のパフォーマンスが可能になりました。
ただし、ソフトウェア エンジニアリングは、プログラミング コンテストを解決するだけではありません。
コード補完を超えて、AI がサポートするソフトウェア エンジニアリングに移行するには、とりわけ、コードの臭いを回避する方法を理解し、言語のイディオムに従い、最終的に (おそらく!) 合理的なソフトウェア設計を提案できる AI システムが必要になります。
この調査では、Copilot などの AI がサポートするコード補完ツールの現在の制限を調査し、この分野における AI がサポートするコード補完ツールの分類を理解するための簡単な分類法を提供します。
最初に、言語イディオムとコードの匂いに対する Copilot のコード提案に関する探索的研究を行います。
Copilot は、ほとんどのテスト シナリオで言語イディオムに従わず、コードの臭いを回避します。
次に、コードのコンパイルや構文チェックなどの「基本的なプログラミング機能」が最小限の抽象レベル、ソフトウェア アーキテクチャ分析であるソフトウェア抽象化階層の分類法を導入することにより、Copilot などの AI がサポートするコード補完ツールの現在の境界を決定するために追加の調査を行います。
そしてデザインは最も抽象的なレベルにあります。
最後に、分類法における抽象化の設計レベルに到達するための、AI をサポートするコード補完ツールの将来の開発に関する課題について説明します。
要約(オリジナル)
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.
arxiv情報
著者 | Rohith Pudari,Neil A. Ernst |
発行日 | 2023-03-07 18:56:52+00:00 |
arxivサイト | arxiv_id(pdf) |
提供元, 利用サービス
arxiv.jp, Google