加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

DL时代的代码补全利器,效果远超语言模型

发布时间:2019-08-19 17:14:02 所属栏目:移动互联 来源:思源、一鸣
导读:从程序员到数据工程师,编写程序代码是一项基本功,但是编写冗长代码的过程也极大地消耗了开发者的耐心。近来,有不少关于代码补全工具的消息爆出,例如,来自美国的 Kite,来自加拿大的 TabNine 等,一时间获得了不少程序员的关注。但其实很多人还并不知
副标题[/!--empirenews.page--]

 DL时代的代码补全利器,效果远超语言模型

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

在本文中,机器之心采访了项目总负责人北京大学计算机科学技术系副教授李戈,请他为读者朋友解读自动代码补全背后的技术,以及 aiXcoder 背后的技术特性和优势。
 
aiXcoder 官网:https://www.aixcoder.com/#/

aiXcoder 的代码补全效果

我们先看看写 TensorFlow 时的代码补全效果:
DL时代的代码补全利器,北大出品,效果远超语言模型

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

aiXcoder 支持 Java、C++/C、Python、PHP、JavaScript 等语言,以插件的方式集成到现有的 IDE 中,如 Pycharm、Android Studio、VS Code、Eclipse、Webstorm、Sublime 等,插件的背后是一个强大的云端深度学习引擎。

针对开发者,该产品目前分为社区版、专业版和企业版。社区版是完全免费的,专业版也可以通过分享而免费获得。它们间的不同之处在于模型会不会继续学习,社区版主要利用事先训练好的公用模型做预测,而专业版则会根据用户的代码习惯及结构作进一步的调整。

企业版是 aiXcoder 功能最为强大的版本,它能够在企业内部的私有云中进行部署,并能够利用企业自己的代码来进行模型的优化训练,从而具有更高的准确率和运行性能。

aiXcoder 用起来怎么样

百闻不如一见,机器之心也对 aiXocder 进行了使用测试。

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

使用体会

一般而言,当我们选择 Python 和 PyCharm 时,代码补全就自然用 IDE 自带的工具。使用 aiXcoder 第一个感受是它比自带的补全工具灵活得多,因为以前的补全主要体现在 Python 函数或其它包的 API,而 aiXcoder 还会预测变量名是什么、运算是什么、想调用的函数又是什么。

虽然代码补全的推断过程全是在云端完成的,但在我们的使用中,一般网络环境甚至 4G 都能有实时的反馈,所以补全速度上基本和 Pycharm 自带的工具差不多。李戈教授表示,目前 aiXcoder 绝大多数都能在 200ms 左右得到反馈,有部分地区的用户由于网络延迟问题可能会感觉到卡顿,aiXcoder 正在全国各个主要城市部署服务器,以提升用户体验。同时,aiXcoder 团队也特别关注模型压缩技术,希望把基于 CPU 的推理运算时间压缩到可接受的程度,从而推出能够在 CPU 上运行的本地版。

总体而言,aiXcoder 提供的补全功能在预测变量名、函数名或关键字等效果上确实非常灵活,而且它还会学习开发者的代码风格与编程模式,因此效果还是挺好的。

如下是自动补全的一些候选,一些函数名称可能是开发者之间经常使用的,因此得到了推荐:
 
DL时代的代码补全利器,北大出品,效果远超语言模型

对于一些变量,aiXcoder 可根据变量类型提出该变量可能的操作,比如,对于下图的变量「m」,aiXcoder 提出了一个对字符串进行增加的代码:
 
DL时代的代码补全利器,北大出品,效果远超语言模型

对比测评

aiXcoder 官方也将产品和其他代码补全工具进行了对比,包括 Kite 和 TabNine 等。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读