专栏名称: AI数据派
THU数据派"基于清华,放眼世界",以扎实的理工功底闯荡“数据江湖”。发布全球大数据资讯,定期组织线下活动,分享前沿产业动态。了解清华大数据,敬请关注姐妹号“数据派THU”。
目录
相关文章推荐
泉安安海在线  ·  泉州晋江国际机场最新通告 ·  昨天  
泉安安海在线  ·  泉州晋江国际机场最新通告 ·  昨天  
海峡都市报闽南新闻  ·  36个教学班!新增学位1800个!泉州九中城 ... ·  3 天前  
海峡都市报闽南新闻  ·  36个教学班!新增学位1800个!泉州九中城 ... ·  3 天前  
海峡都市报闽南新闻  ·  事发泉州!一皮卡车突然冲进商场,现场画面曝光 ·  3 天前  
51好读  ›  专栏  ›  AI数据派

杀手级AI补代码工具问世,支持23种语言、5种主流编辑器!(附链接)

AI数据派  · 公众号  ·  · 2019-07-19 07:30

正文

本文经AI新媒体量子位授权转载,转载请联系出处。

本文约 2100 字, 建议阅读 10 分钟。

本文介绍了新开发出的 “Deep TabNine“代码补全工具,支持多种编程语言和编辑器。


GPT-2,一个来自OpenAI的逆天语言模型,现在能用来补全代码了。


一位来自加拿大的大四学霸,开发了一款”Deep TabNine“代码补全工具,实现了这一大胆的想法。


它支持23种编程语言、5种编辑器,使用简单,效果惊艳。


不少使用过的网友说:TabNine是他们用过的最好的代码补全工具,这是属于 程序员的杀手级应用。



在VS Code的扩展商店里,TabNine已经被下载1.3万次,获得全5星好评。


支持23种编程语言


Deep TabNine支持 Java:



Python:



C++:



Haskell:



不同于各种其他代码补全插件,Deep TabNine是根据程序员过去的习惯自动补全,并在后面给出几种选项的概率。


如果有类似代码出现在之前的项目里,TabNine还会在补全候选框中直接给出地址,方便用户点击进去查阅。


除以上几种语言之外,Deep TabNine还支持 JavaScript、C、PHP、Go、C#、Ruby、Objective-C、Rust、Swift、TypeScript、OCaml、Scala、Kotlin、Perl、SQL、HTML、CSS和Bash。


主流编程语言几乎都囊括在内。


支持5种编辑器


TabNine支持 VS Code、Sublime Text、Atom、Emacs、Vim 五种代码编辑器。


对于使用VS Code和Sublime来说,安装TabNine非常方便,用自带的扩展包管理工具即可。


VS Code


VS Code用户按下Ctrl+P(Mac用户按下⌘+P),粘贴以下命令,然后按回车键完成安装。


ext install TabNine.tabnine-vscode


Sublime


Sublime用户安装分为两步:


  • 按下Ctrl+Shift+P(Mac用户:⌘+Shift+P),选择Install Package Control;

  • 再次按下Ctrl+Shift+P(Mac用户:⌘+Shift+P),选择Package Control:Install Package,然后选择TabNine来安装。


Vim


Vim使用Vundle插件管理器进行安装:


  • 添加Plugin ‘zxqfl/tabnine-vim’到.vimrc;

  • 输入:PluginInstall,按下回车完成安装。


其他编辑器的安装方法就不一一赘述了,有需要的用户可以参照文末的链接进行安装。


项目超过400kb需要购买许可证:个人用户49美元,商业用户99美元。



由于Deep TabNine用到机器学习补全代码,因此需要大量的算力(超过100亿次浮点运算),在笔记本上运行模型,无法获得低延迟的体验。


因此,软件开发者推出了 TabNine Cloud 云服务器,用云端GPU加速。付费用户不需要再加钱即可使用。


所以听起来很划算吧?


软件开发者自己就说,这个价格其实不贵,有了TabNine,一分钟就里能帮你节省一秒,咱们再算算程序员的时薪,每个小时能节约1.4美元,不到一年时间就能回本了。


如果你对效果不满意,TabNine开发者还提供30天退款保证。


怎么做到的?


TabNine是在GPT-2的基础上构建的,这是一种Transformer架构,原产自OpenAI,是个“逆天”语言模型。


GPT-2的参数高达15亿个,数据量比一代扩大了10倍,使用了包含800万个网页的数据集,共有40GB。


逆天之处就在于,GPT-2写起文章来毫无违和感,无需针对性训练就能横扫各种特定领域的语言建模任务,还具备阅读理解、问答、生成文章摘要、翻译等等能力。


就GPT-2而言,它的训练目标很简单:根据所有给定文本中前面的单词,预测下一个单词。虽然本来是解决NLP问题,看似与写代码没什么关联,但建模代码也算是用一种 独有的方式在理解英文。


比如,可以让模型用if/else语句否定单词:


项目主页显示,在大约经过GitHub中200万个文件训练后,TabNine具备了自动补全代码的能力。


在训练这个模型期间,模型学习了例如动态类型语言中的类型推断等复杂行为,用这样的训练方式预测token。



作者表示,TabNine可以很好利用传统代码补全工具难以获取的琐碎细节。


例如,假设app.get_user()的返回类型是一个带有setter方法的对象,而app.get_users()的返回类型是一个列表,两个名称之间只有细微的差别:



这个模型还能以自然语言编写的文档来推断函数名称、参数和返回类型:



Deep TabNine加入了之前用户强烈要求加入的功能:用预先存在的知识,解决在创建新项目时的代码补全问题。


例如,它知道当一个类扩展React.Component时,它的构造函数通常会调用一个名为props的参数,并且通常在其内部用this.state赋值:



Deep TabNine甚至可以做不可能的事情,并记住C++可变参数转发语法:



“杀手级应用”


TabNine问世后,不断收获好评,甚至还有程序员激动得爆粗口:


卧槽,这种软件多来点就好了。(Fuck yeah. This is the sort of software I want to see more often: TabNine )






请到「今天看啥」查看全文