开发人员以谋生为目的进行编码,这意味着大量时间在笔记本电脑上书写。因此,当他们进行编码时,他们可以从Google在Gmail中由AI生成的Smart Compose建议中受益。但是直到最近,开发人员还没有很多智能自动完成选项。
然而,本月初,谷歌宣布其流行的Dart软件开发套件的新版本将用于构建智能手机应用程序,该版本将随附“ ML Complete”,该版本使用机器学习在Dart中提供代码完成建议。
请参阅:如何建立成功的开发人员职业生涯(免费PDF)
这是Google交付给开发人员的第一个智能自动完成工具,但Kite是旧金山的一家初创公司,致力于为Python开发人员提供由AI驱动的代码自动完成工具,多年来一直处于停滞状态。
Kite刚刚 宣布推出Intelligent Snippets,该功能使开发人员能够完成Python中由“令牌”组成的整个句子的等效内容 ,由于 机器学习的发展,该语言已成为程序员必不可少的语言。
编程中令牌的口语等效词是一个词,现在Kite可以建议多个令牌,而用户无需先手动定义句子的结构,这意味着它可以即时适应开发人员的编码风格。
但目前,仅适用于使用Python的开发人员才能通过最新版本的Kite for Python代码编辑器(如Atom,PyCharm,Sublime Text,VS Code和Vim)使用Kite及其新的Intelligent Snippets功能。
风筝首席执行官亚当·史密斯(Adam Smith)告诉ZDNet:“智能代码段是用户可以在其中填补空白的较大代码段。”
该功能建立在Kite的主要前提之上,该前提是允许开发人员更快地键入内容并避免需要在Web上查找参考文档,从而帮助他们节省时间和精力。
在风筝目前拥有30,000名开发人员的用户群中,史密斯说,欧洲编码人员仅占其网络访问量的不到三分之一,该地区是仅次于美国的第二大用户群体。
8月,欧洲大约3,000名Python开发人员开始使用Kite,这表明来自欧盟地区的开发人员的兴趣日益浓厚。
Kite还获得了著名的德国开发人员Joachim Ansorg的支持,Joachim Ansorg从捷克的JetBrains公司为集成化开发环境(IDE)构建了PyCharm的Kite插件,背后是官方Android编程语言Kotlin。
智能片段旨在解决使用机器学习模型来预测涉及多个令牌的更复杂建议的局限性。
Smith解释说:“智能片段基本上与编辑器一起使用,可以为您带来完成内空白的体验。”
“我们最终要努力建立的是人类开发人员和编辑环境之间的交互,在这种环境中,共生关系尽可能地紧密。这是帮助我们的用户获得这些模型的智能的重要一步,”他说。史密斯
风筝有其局限性。TabNine是加拿大计算机科学专业学生Jacob Jackson的自动完成软件,它通过使用自然语言处理采用了一种新颖的方法来应对开发人员挑战,从而可以为包括Python,JavaScript,Java,C ++在内的十几种编程语言提供智能建议。 ,C和PHP。
杰克逊(Jackson)在Open AI的GPT-2上构建了TabNine,该GPT-2用于预测人类口语中的单词,但TabNine用来根据先前的令牌来预测开发人员键入的下一个令牌。
杰克逊的方法是否是制胜法尚待观察,但目前看来,它比风筝提供了更大的灵活性。
史密斯说:“我们处于1995年或1994年的网络搜索阶段。现在还处于初期阶段。目前尚不清楚哪种技术或哪种方法最终会获胜。”
“对于TabNine与Kite而言,这是一组非常有趣的取舍,” Smith说。“ TabNine不使用任何语义信息。这意味着他们的模型不了解或不使用您正在使用的代码的更深层次的结构。它学习了其中的一些元素,但是非常有限。”
Smith指出,自然语言与代码之间的主要区别之一是,在自然语言中,上下文是本地定义的。
因此,如果一个人说诸如“ that”,“ where”或“ herself”之类的代词,则该模型可以查看其前面所说的单词,以了解说话者所指的是什么。但是,要使模型从编程语言中了解功能,就需要访问非本地信息。
如果您今天必须选择一种语言,Python绝对不是支持错误的语言,但是Kite需要构建一个全新的引擎来支持Java或JavaScript。
Smith说:“与我们迄今为止使用的模型(用户程序分析引擎)相比,使用GPT-2的权衡之一是它不是自然地跨语言的。” “您几乎需要为要支持的每种语言使用不同的引擎。”
TabNine的杰克逊(Jackson)认为,在两种方法之间进行取舍是有缺陷的,因为这不是“或非”选择。
“这里存在错误二分法的危险:将深层模型与语义方法进行比较时,很容易忘记您可以同时使用两者。确实,这是启用语义完成功能时TabNine所做的事情:它使用语义完成程序进行过滤深层模型的结果。”杰克逊在一封电子邮件中告诉ZDNet。
“在我看来,这不是哪种方法更好的问题,而是'如何将这些方法一起使用来互相补充?”。
开发人员拥有的另一个AI自动完成选项是Visual Studio中的Microsoft IntelliCode。Smith承认Microsoft的方法“易于构建,易于实现且非常快速”,但他指出,它缺乏多令牌完成功能,并且考虑到“很少上下文”。
他谈到微软的IntelliCode时说:“您不必担心性能,也不必将代码发送到服务器进行处理。”
这是TabNine和Kite最初都必须解决的一个主要优势,这使他们俩都作为基于云的服务启动,以利用与高端笔记本电脑相比更大的计算能力。
但是,从今年开始, TabNine和Kite现在提供本地运行的系统,因此开发人员无需将其私有源代码发送到云中。
至于史密斯为何选择Python而不是JavaScript或Java的原因,CEO表示这是一个务实的决定:动态类型的语言(如Python和JavaScript)比静态类型的语言(如Java或C#)更难分析。另外,Python工具的发展也不尽人意,因此使其成为更容易的目标。
Smith指出:“即使在今天,JavaScript和Python的开发环境对于Java或C#仍然没有真正的优势。”
至于选择Python而不是JavaScript,Smith认为JavaScript是一个更困难的目标,因为从浏览器版本到服务器版本(例如React和Node.js),JavaScript有很多不同的风格。
“如果我们想支持JavaScript,要做到这将需要更多的工程工作,尤其是在我们只是想尽快迭代的早期,所以我们喜欢Python的较低表面积。史密斯说:“在某种程度上,Python取得了非常成功,这是一种幸运。”