近日,滑铁卢大学学生研发了一款名为DeepTabNine的代码自动补全器。该软件可经过机器学习算法,在无需解析大量已有代码的状况下,为程序员提供高质量的编程建议。程序员经常使用的编程方法就像‘用手机键盘打字’,而使用Deep TabNine就像转换到‘电脑键盘同样。程序员
近年来,人工智能技术已经被大规模用以生成文本内容。经过扫描大量的文本集,许多机器学习应用能够生成歌词、诗句、短篇小说、新闻稿等逻辑严明的文本,已十分接近真人撰稿的水平。算法
如今,滑铁卢大学学生将AI应用到计算机编程领域。其研发的DeepTabNine代码自动补全器,利用GPT-2模型,通过200多万份文件的训练,能够为20多种语言的编程工做提供高质量建议。Deep TabNine已能够在相关网站上付费下载,目前没有进一步商业化的计划。编程
▲使用Python编程时提供建议的Deep TabNine机器学习
1、利用机器学习模型,提高代码补全效果编程语言
程序员能够将Deep TabNine插件安装到他们的代码编辑器中,当他们开始编程时,该插件会建议下一行代码写什么,每次会提供一小块建议。编辑器
“这类代码补全器插件并很多见,可是经过机器学习技术这款插件的补全效果得到了大大的提高。”Deep TabNine的缔造者Jacob Jackson表示。函数
去年2月,Jackson开始开发TabNine软件的原始版本,并于同年11月发布。但本月,他发布了一个更新版本,使用了OpenAI的实验室设计的名为GPT-2的深度学习模型生成算法,以提升其算力。OpenAI是由马斯克等诸多硅谷大亨联合创建的人工智能非营利组织。工具
2、程序员:TabNine的代码建议更准确学习
这一更新使许多程序员给予了DeepTabNine正面反馈,他们在Twitter上称其是“惊人的”、“绝对使人兴奋的”。网站
一位名叫Franck Nijhof的用户是一名IT经理,他在业余时间经常本身研究家庭自动化软件。Nijhof向The Verge写邮件称:“在使用DeepTabNine的第一个小时,我并无获得什么帮助,由于我简直为它着迷了。我不停地问本身,它是怎么知道的?”
像这样的自动补全工具并不新鲜,可是Nijhof说DeepTabNine的建议更加准确。他说:“我过去试过一些不错的通用软件,它们把事情变复杂了,而且也怎么不实用。TabNine无疑是游戏规则的改变者。”
3、学习200多万份文件,无需解析已有代码
Jackson说,市面上大多数自动补全器都必须解析用户已经编写的代码,以便提出建议,就像处理数学公式中的步骤同样处理代码。相比之下,DeepTabNine则依赖于机器学习在数据中发现统计模式,进而作出预测。
就像文本生成算法须要用大量的图书、文章及电影脚本的大型数据集来训练同样,DeepTabNine也须要用编码库GitHub中的200多万份文件进行训练。
Deep TabNine利用由这些数据训练出的模型,来提示程序员接下来可能出现的在任何给定代码行中的内容,不管是变量名仍是函数。
4、支持约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)
同时,依托深度学习分析能力,DeepTabNine提出的建议综合质量很高。因为该软件不会查看用户本身的代码来提出建议,因此它能够从一开始就帮助程序员推动工做,而不是等着从程序员编写的代码中得到提示。
5、不适合开创性的编程工做,有时会出错
固然,这个软件也有缺陷。它在建议中有时候会出错,且并非对全部类型的代码都有用。黑客新闻等编程网站及论坛上有许多专业人士对该软件展开了讨论,其中有许多正面评论,也有一些指出了问题。
其中有一条差评是Deep TabNine的缔造者Jackson也表示赞同的,即DeepTabNine更适合一部分特定类型的编程指令。当自动完成相对死记硬背的代码时,Deep TabNine的工做效率最高,由于这类代码用的频率很高,且每每变化很小。当用户须要解决新问题时,面对开创性的编码需求,它就有些“压力山大”了。据称,这个问题的存在也是合理的,主要是因为该软件的智能来自对存档数据的学习。
那么它对程序员到底有多大用处呢?这将取决于不少因素,好比他们使用什么编程语言以及他们想要实现什么。可是Jackson说,它更像是一种更快的输入方法,而不是程序员编码伙伴,不是一种常见的结队编程应用。
Jackson说:“打个比方,程序员经常使用的编程方法就像‘用手机键盘打字’,而使用DeepTabNine就像转换到‘电脑键盘同样’。”软件提升了你输入信息的速度,这让你更有效率,“所以你能够花更多的时间思考高层次的东西,而不是细节。”但它不会为你编写代码,你也须要检查验证,不能过于依赖它。
7、未肯定是否商业化,但花49美圆可买到
目前,Jackson正在考虑下一步如何使用该软件,以及是否值得将其商业化。他说:“我在一家大型科技公司作全职工做,我不想放弃这份工做。不少来自各行各业的人找到我,表示对Deep TabNine感兴趣。但我尚未想好下一步怎么作。”
TabNine的我的使用许可价格为49美圆,商业使用许可价格为99美圆,用户必须注册DeepTabNine beta版才能使用新的深度学习功能。在相关网站上,Jackson这样解释该价格:“TabNine每分钟将为你节省至少1秒钟时间。若是你把时间的价值定在每小时1.40美圆以上,不到一年就能收回成本。”
“个人梦想是将来能建成一个程序,它能根据程序员的需求直接生成代码。目前咱们离这个目标还很远,但我认为Deep TabNine可让你更快捷地表达想法。”Jackson表示。