广州少儿编程培训

【广州少儿编程培训】用AI辅助编程,这款自动完成软件帮助程序员高效工作



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