这款基于人工智能自动完成软件是Gmail的编码器智能编写软件
在过去的一年中,AI已经认真提高了生成书面文字的能力。通过扫描庞大的文本数据集,机器学习软件可以生成从短篇小说到歌词的各种令人信服的样本。现在,使用名为Deep TabNine的新程序将这些相同的技术应用于编码世界。
Deep TabNine就是所谓的编码自动完成器。程序员可以将它作为附件安装在他们选择的编辑器中,当他们开始编写时,它会建议如何继续每一行,一次提供小块。您可以将其视为Gmail的智能撰写功能,但需要考虑代码。
机器学习可以认真提高编码助手的能力
滑铁卢大学的计算机科学本科学生Jacob Jackson创建了Deep TabNine,他说这种软件并不新鲜,但机器学习已经大大改善了它的功能。“这对我来说解决了一个问题,”他告诉The Verge。
杰克逊于去年2月开始研究该软件的原始版本TabNine,然后于11月推出。但本月早些时候,他发布了一个更新版本,该版本使用由研究实验室OpenAI设计的深度学习文本生成算法GPT-2来提高其能力。这一更新给编程人员留下了深刻印象,他们称Twitter上的“惊人”,“疯狂”和“绝对令人兴奋”。
一位用户Franck Nijhof是一位在闲暇时间从事开源家庭自动化软件工作的IT经理,他说,他不仅对Deep TabNine感到惊讶 - 他还是以一种愉快的方式感到害怕。“我使用Deep TabNine的第一个小时没有用[因为]我不停地惊讶地试图绕过它,”Nijhof通过电子邮件告诉The Verge。他一直在问自己,“它怎么知道的?但是怎么样?“
像这样的自动完成工具并不新鲜,但Nijhof说Deep TabNine的建议更准确。“我过去曾尝试过一些聪明的'普遍',但它们很烦人而且没有帮助,”他说。“TabNine无疑是一个改变游戏规则的人。”
深度学习自动完成https://t.co/WenacHVj7z非常酷!很久以前我在char-rnn的时候尝试过相关的想法,但当时它并不是很有用。随着新玩具(GPT-2)和更多的关注,这可能会开始工作得很好。
杰克逊说,该软件提供了更好的建议,因为它可以预测。大多数自动填充程序必须解析用户已编写的内容以提出建议,通过代码处理,就像您将使用数学公式中的步骤一样。相比之下,Deep TabNine依赖于机器学习的能力来查找数据中的统计模式以进行预测。
与文本生成算法在大量书籍,文章和电影脚本数据集上进行训练的方式相同,Deep TabNine对来自编码库GitHub的200万个文件进行了培训。它在这些数据中找到模式,并使用它们来建议在任何给定的代码行中可能出现的内容,无论是变量名还是函数。
杰克逊说,使用深度学习创建自动完成软件有几个优点。一开始,它可以轻松添加对新语言的支持。他说,你只需要将更多的训练数据放入Deep TabNine的漏斗中,它就会挖出模式。这意味着Deep TabNine支持大约22种不同的编码语言,而大多数替代方案只使用一种。
(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提出的建议具有很高的整体质量。并且因为软件不会查看用户自己的代码来提出建议,所以它可以从单词go开始帮助完成项目,而不是等待用户编写的代码中的某些提示。
DEEP TABNINE也存在问题
当然,该软件并不完美。它在其建议中出错,对所有类型的编码都没有用。像黑客新闻和r / program subreddit这样的各种编程漏洞的用户已经讨论了它的优点并提供了一些混合的评论(尽管它们大多倾向于正面)。正如您对编码器构建的编码工具所期望的那样,人们对于它们与现有编辑器和工作流程的精确程度有很多关系。
杰克逊同意的一个抱怨是合法的,Deep TabNine更适合某些类型的编码。它在自动完成相对死记硬背的代码时效果最好,这种编程已经做了数千次,只有很小的变化。它不太能够编写探索性代码,用户正在解决一个新问题。考虑到软件的智能来自档案数据中的模式,这是有道理的。
Deep TabNine用于编写一些C ++。
那么你的普通编码器真的有用吗?这取决于很多因素,比如他们使用的编程语言以及他们想要实现的目标。但杰克逊表示,它更像是一种比人类编码伙伴更快的输入法(一种常见的做法称为结对编程)。
“想象一下,现在所有的程序员都在使用相当于手机的键盘进行打字,而深入TabNine有点像转向常规键盘,”他说。该软件可以提高您输入信息的速度,并且可以提高您的工作效率“因为您可以花更多时间考虑高级内容而不是细节。”但它不会为您编写代码,而您确实需要要密切关注它。
“我还没有真正决定我想用它做什么。”
目前,杰克逊正在考虑下一步该软件应该做什么,以及它是否值得商业化。他说,他有一份全职工作,排成一家他不想放弃的大型科技公司,但各界人士对此表示“非常感兴趣”。“我还没有真正决定我想用它做什么,”他说。
目前,TabNine的许可证个人使用费用为49美元,商业用途费用为99美元,个人必须注册Deep TabNine测试版才能访问新的深度学习功能。在网站上,杰克逊证明了这样的价格,这对软件的吸引力起到了不错的作用:“TabNine每分钟至少可以节省1秒钟。如果你认为你的时间超过每小时1.40美元,它将在不到一年的时间内收回成本。“
他说,如果他能够使用开源软件创建这样的程序,那么AI辅助编码的未来是光明的。
“这是在这个领域工作的每个人的目标,告诉计算机你想要写什么代码,它是为你做的,”他说。“我们目前还没有接近,但我认为这是一种工具,可以让你更方便地表达自己的想法。