This talk covers the evolution of smart coding assistants mostly focusing on smart code completion but covering a bit of other use cases too. We will discuss the term coding assistants, their effects on developer productivity, and possible ways to estimate the quality of suggestions. Then we will cover the history, weak and strong sides, as well as describe the most popular approaches to construction. Then we will cover the mixed approach that uses the strength of both static analysis and deep learning, describe a vision of our team and demo some results that we have in this direction. Finally, we will discuss possible next steps in smart coding assistants as well as a few other possible use cases where a combination of static analysis + deep learning can enchant developer productivity.
本次演讲将分享智能编码助手的演进,主要关注智能代码生成,但也涵盖了其他一些用例。我们将讨论编码助手对开发人员生产力的影响,预估建议质量的可能方法。接着我们将介绍它的历史、缺点和优点,并描述最流行的构建方法。然后我们将介绍利用静态分析和深度学习的优势的混合方法,描述我们团队的愿景并演示我们在这个方向上的一些结果。最后,我们将讨论智能编码助手中可能的后续步骤以及其他一些可能的用例,其中静态分析+深度学习的组合可以提高开发人员的生产力。
Outline 演讲提纲:
1. Introduction 介绍
- What is a coding assistant, and how they can be useful? 什么是编码助手,有什么用处?
- What are the effects on developer productivity? 对开发人员生产力有什么影响?
- How we can estimate the quality of the suggestions? 我们如何预估建议的质量?
2. History and the existing state-of-the-art 历史与现状
- Classic approaches 经典方法: Basics/Code Recommenders/Modern proposal ranking solutions
- Machine learning-based approaches 基于机器学习的方法: Codota/Language Modelling/TabNine/GitHub Copilot
3. Analysis 分析
- The strong and weak sides of language model-based approaches 基于语言模型的方法的优缺点
- The strong and weak side of simple ranking 简单排名方法的优缺点
4. What do we do in Huawei? 华为实践
- Unify the strong sides of both approaches! (Code Model is the library and ML is the brain who decides) 如何整合两种方法的优点 (代码模型是库,机器学习是决定的大脑)
- The fast Code model is the key Fast Code 快速代码模型是关键
- Our approach at the glance 方法一览
5. Demo 演示
6. What is the possible shapes of the Future? 未来形态
- Bridging LM and Static Code analysis? 桥接 LM 和静态代码分析?
- May be RL is the key? 可能 RL 是关键?
- Adding history and style? 增加 history 和 style?
- More use cases. Bug finding, smarter navigation, code explorations 更多用例。错误发现、更智能的导航、代码探索
Takeaway 你将获得:
- Learn about both pure static analysis and ML/DL approaches to building coding assistants has their own benefits, and drawbacks 了解构建编码助手的纯静态分析和 ML/DL 方法各有优缺点
- Learn about the future of smart coding assistants is in a building a successful mix of these two basic directions where both concepts work together in a synergy 了解智能编码助手的未来在于构建这两个基本方向的成功组合,让两个概念协同工作