智东西(公众号:zhidxcom)
编 | 李水青

导语:“打个比方,程序员常用的编程方法就像‘用手机键盘打字’,而使用Deep TabNine就像转换到‘电脑键盘一样’。”

智东西7月25日消息,近日,滑铁卢大学学生研发了一款名为Deep TabNine的代码自动补全器。该软件可通过机器学习算法,在无需解析大量已有代码的情况下,为程序员提供高质量的编程建议。

近年来,人工智能技术已经被大规模用以生成文本内容。通过扫描大量的文本集,许多机器学习应用可以生成歌词、诗句、短篇小说、新闻稿等逻辑严明的文本,已十分接近真人撰稿的水平。

现在,滑铁卢大学学生将AI应用到计算机编程领域。其研发的Deep TabNine代码自动补全器,利用GPT-2模型,经过200多万份文件的训练,可以为20多种语言的编程工作提供高质量建议。Deep TabNine已可以在相关网站上付费下载,目前没有进一步商业化的计划。

程序员福音!这款神器利用深度学习帮你补全编程代码

▲使用Python编程时提供建议的Deep TabNine

一、利用机器学习模型,提升代码补全效果

程序员可以将Deep TabNine插件安装到他们的代码编辑器中,当他们开始编程时,该插件会建议下一行代码写什么,每次会提供一小块建议。

“这类代码补全器插件并不少见,但是通过机器学习技术这款插件的补全效果获得了大大的提升。”Deep TabNine的缔造者Jacob Jackson表示。

去年2月,Jackson开始开发TabNine软件的原始版本,并于同年11月发布。但本月,他发布了一个更新版本,使用了OpenAI的实验室设计的名为GPT-2的深度学习模型生成算法,以提高其算力。OpenAI是由马斯克等诸多硅谷大亨联合建立的人工智能非营利组织。

二、程序员:TabNine的代码建议更准确

这一更新使许多程序员给予了Deep TabNine正面反馈,他们在Twitter上称其是“惊人的”、“绝对令人兴奋的”。

一位名叫Franck Nijhof的用户是一名IT经理,他在业余时间常常自己研究家庭自动化软件。Nijhof向The Verge写邮件称:“在使用Deep TabNine的第一个小时,我并没有得到什么帮助,因为我简直为它着迷了。我不停地问自己,它是怎么知道的?”

像这样的自动补全工具并不新鲜,但是Nijhof说Deep TabNine的建议更加准确。他说:“我过去试过一些不错的通用软件,它们把事情变复杂了,并且也怎么不实用。TabNine无疑是游戏规则的改变者。”

程序员福音!这款神器利用深度学习帮你补全编程代码

三、学习200多万份文件,无需解析已有代码

Jackson说,市面上大多数自动补全器都必须解析用户已经编写的代码,以便提出建议,就像处理数学公式中的步骤一样处理代码。相比之下,Deep TabNine则依赖于机器学习在数据中发现统计模式,进而做出预测。

就像文本生成算法需要用大量的图书、文章及电影脚本的大型数据集来训练一样,Deep TabNine也需要用编码库GitHub中的200多万份文件进行训练。

Deep TabNine利用由这些数据训练出的模型,来提示程序员接下来可能出现的在任何给定代码行中的内容,无论是变量名还是函数。

四、支持约22种编程语言,建议质量高

Jackson说,使用深度学习来创建代码补全软件有几个优点。

首先,它支持添加新语言,而且操作简易。据称,你只需要把更多的训练数据放入TabNine中,它就会导出相关模型。Deep TabNine支持大约22种不同的编码语言,而大多数其他的代码补全器都只支持一种语言。

程序员福音!这款神器利用深度学习帮你补全编程代码

▲使用C++编写代码时提供建议的Deep TabNine

(Deep TabNine支持的语言的完整列表如下:Python、JavaScript、Java、C++、C、PHP、Go、C#、Ruby、Objective-C、Rust、Swift、TypeScript、Haskell、OCaml、Scala、Kotlin、Perl、SQL、HTML、CSS和Bash)

同时,依托深度学习分析能力,Deep TabNine提出的建议综合质量很高。由于该软件不会查看用户自己的代码来提出建议,所以它可以从一开始就帮助程序员推进工作,而不是等着从程序员编写的代码中获得提示。

五、不适合开创性的编程工作,有时会出错

当然,这个软件也有缺陷。它在建议中有时候会出错,且并不是对所有类型的代码都有用。黑客新闻等编程网站及论坛上有许多专业人士对该软件展开了讨论,其中有许多正面评论,也有一些指出了问题。

其中有一条差评是Deep TabNine的缔造者Jackson也表示赞同的,即Deep TabNine更适合一部分特定类型的编程指令。当自动完成相对死记硬背的代码时,Deep TabNine的工作效率最高,因为这类代码用的频率很高,且往往变化很小。当用户需要解决新问题时,面对开创性的编码需求,它就有些“压力山大”了。据称,这个问题的存在也是合理的,主要是由于该软件的智能来自对存档数据的学习。

那么它对程序员到底有多大用处呢?这将取决于很多因素,比如他们使用什么编程语言以及他们想要实现什么。但是Jackson说,它更像是一种更快的输入方法,而不是程序员编码伙伴,不是一种常见的结队编程应用。

Jackson说:“打个比方,程序员常用的编程方法就像‘用手机键盘打字’,而使用Deep TabNine就像转换到‘电脑键盘一样’。”软件提高了你输入信息的速度,这让你更有效率,“因此你可以花更多的时间思考高层次的东西,而不是细节。”但它不会为你编写代码,你也需要检查验证,不能过于依赖它。

七、未确定是否商业化,但花49美元可买到

目前,Jackson正在考虑下一步如何使用该软件,以及是否值得将其商业化。他说:“我在一家大型科技公司做全职工作,我不想放弃这份工作。很多来自各行各业的人找到我,表示对Deep TabNine感兴趣。但我还没有想好下一步怎么做。”

TabNine的个人使用许可价格为49美元,商业使用许可价格为99美元,用户必须注册Deep TabNine beta版才能使用新的深度学习功能。在相关网站上,Jackson这样解释该价格:“TabNine每分钟将为你节省至少1秒钟时间。如果你把时间的价值定在每小时1.40美元以上,不到一年就能收回成本。”

“我的梦想是未来能建成一个程序,它能根据程序员的需求直接生成代码。目前我们离这个目标还很远,但我认为Deep TabNine可以让你更快捷地表达想法。”Jackson表示。

文章来源:The Verge