aiXcoder:源自中国的深度学习代码补全工具

新知榜官方账号

2023-09-17 23:26:46

aiXcoder:源自中国的深度学习代码补全工具

从程序员到数据工程师,编写程序代码是一项基本功,但是编写冗长代码的过程也极大地消耗了开发者的耐心。近来,有不少关于代码补全工具的消息爆出,例如,来自美国的Kite,来自加拿大的TabNine等,一时间获得了不少程序员的关注。但其实很多人还并不知道,在这些国外产品不断被媒体推送的背后,有一款能力更为强大、更早将深度学习应用于代码补全的产品,一款源自中国的工具——aiXcoder,它的研发者们来自于北京大学。

aiXcoder支持Java、C++/C、Python、PHP、JavaScript等语言,以插件的方式集成到现有的IDE中,如Pycharm、AndroidStudio、VSCode、Eclipse、Webstorm、Sublime等,插件的背后是一个强大的云端深度学习引擎。针对开发者,该产品目前分为社区版、专业版和企业版。社区版是完全免费的,专业版也可以通过分享而免费获得。企业版是aiXcoder功能最为强大的版本,它能够在企业内部的私有云中进行部署,并能够利用企业自己的代码来进行模型的优化训练,从而具有更高的准确率和运行性能。

aiXcoder用起来怎么样?机器之心也对aiXocder进行了使用测试。机器之心在Pycharm上试用了社区版/专业版,它们都是需要在线推断。不同的地方在于专业版还需要额外的内存,因为每一个Pro用户都需要额外的缓冲区来储存模型「学到的」用户习惯。当然,Pro用户的缓冲区是是只有该插件能访问的。

使用体会一般而言,当我们选择Python和PyCharm时,代码补全就自然用IDE自带的工具。使用aiXcoder第一个感受是它比自带的补全工具灵活得多,因为以前的补全主要体现在Python函数或其它包的API,而aiXcoder还会预测变量名是什么、运算是什么、想调用的函数又是什么。虽然代码补全的推断过程全是在云端完成的,但在我们的使用中,一般网络环境甚至4G都能有实时的反馈,所以补全速度上基本和Pycharm自带的工具差不多。

aiXcoder的代码补全效果我们先看看写TensorFlow时的代码补全效果:

如上所示,aiXcoder在TensorFlow的代码环境下能够直接「猜测」到模型建立后的一系列代码流程。例如,在定义了loss之后需要定义optimizer,之后需要train_op、init方法,然后最终定义模型的保存方式saver,以及开始运行计算图。这样一个流程基本上是深度学习开发者所知晓的,但是按照流程写下来非常繁琐。在aiXcoder的提示下,开发速度得到了提升。

对于一些变量,aiXcoder可根据变量类型提出该变量可能的操作。例如,对于下图的变量「m」,aiXcoder提出了一个对字符串进行增加的代码:

如下是自动补全的一些候选,一些函数名称可能是开发者之间经常使用的,因此得到了推荐:

aiXcoder也将产品和其他代码补全工具进行了对比,包括Kite和TabNine等。在对比过程中,aiXcoder较其他插件在效率上提升1.5倍以上。

aiXcoder,背后有着强大的技术支撑。据李戈教授介绍,aiXcoder很早就试过了语言模型,将代码视为一种语言从而直接建模,这就和DeepTabNine一样。但是研究者很快发现,只有语言模型是行不通的,它总会提出一些毫无意义、很不科学的补全建议。为此,aiXcoder融合了基于序列的程序代码语言模型、基于抽象语法树和程序逻辑关系的图神经网络等方法,共同打造一个完整的系统。

在获得程序代码的各种特征之后,就该把这些特征输入深度神经网络进行分析了,但这并不容易,因为在输入神经网络之前需要把这些特征进行向量化表示。在研究过程中,北京大学提出了一系列解决程序语言成分相量化的办法,并且在国际上最早发表了相关的论文,这些都为aiXcoder的构造打下了基础。

总体而言,aiXcoder主要依赖于其特有的对程序代码进行学习的深度神经网络模型,该模型能够对程序的如下几类特征进行分析:1.程序的结构语义特征,2.程序元素间的逻辑关系,3.程序语言序列模型。aiXcoder借助图神经网络能够对程序元素之间的多种关系进行建模,从而能够对程序元素之间的复杂关系进行分析和推理。

aiXcoder的团队来自北京大学高可信软件技术教育部重点实验室,是国内顶尖的软件科学研究团队,是北京大学计算机软件与理论全国重点学科的主要支撑。该团队在AAAI/IJCAI/ACL等顶会上发表过很多代码生成的相关论文,这也是一大笔技术累积。

本页网址:https://www.xinzhibang.net/article_detail-12058.html

寻求报道,请 点击这里 微信扫码咨询

关键词

aiXcoder 深度学习 代码补全 自动化 程序员 开发速度

分享至微信: 微信扫码阅读

相关工具

相关文章