作者 | Java圣斗士 | 原创图文,转载请注明出处

哦吼吼吼!看来AI终于要拿它的近亲开刀了!颤抖吧!

fca32971c6c694bb06e8e4cd521ec666.png

近日,以GPT-2人工智能语言模型为基础的代码补全工具——TabNine在GitHub上提交了新的版本。

这款代码补全工具诞生于2018年末,正是AI人工智能的消息遮云蔽日的那段时间。短短一年不到,这款超级代码补全工具已经能够几乎支持所有开发语言。不论你是制霸编程界的Java;号称性能之王的C;世界上最好的语言PHP;还是人工智能领域的绝对新星Python都可以使用这款工具来提示并补全代码,可谓强悍至极!

dd7db0ffc3be9367bb8929f426591a7a.gif

圣斗士有幸作为一名Java程序员,参观了TabNine所在GitHub上的仓库,网址如下:https://github.com/zxqfl/TabNine

虽然仓库中的Wiki只是简单罗列了一些功能更新的日志,但我已经隐约感觉到了一股强大的科技感!

在TabNine的官网上,相比仓库,多了一些图片的演示和一些功能说明,不过,号称全语言(all-language)补全机器人目前还并不支持开发Java语言必不可少的 Eclipse或者IDEA:

42b035bcd08c60ef2977b456af34434c.png

不过有人已经使用这款“小机器人”在VS Code上进行了相关语言的代码提示测试:

e8f0cd5844c3083718adf79c4590e46b.gif
c1a64eaaa2d48e891b26c699dbc3d537.gif

可以看到,上面的代码提示演示中,TabNine直接给出了一条完整的静态方法提示选项,这在XxUtils一类的工具类中恰恰是最有可能被使用的情况!而TabNine做到了其他代码补全工具不敢做的!

有开发者指出,与其他编辑器的固定代码输入规则补全提示不同,这款TabNine既然是基于AI的机器学习,那么一定是有着某种习惯性的概率积累。

5dd6d88669529a1830858bc6634e74a2.png

那么其内部究竟是如何工作的呢?

TabNine的工作原理介绍

为了一探究竟,圣斗士专门跑去官网翻译了一下“How does it work”一栏。

在该条目中,作者介绍了TabNine的工作原理,画出来的话就是这样婶的:

2d20f54efbec63dc0bd8d24de2f37dd2.png

TabNine首先会在你的工程中建立一个index索引,读取你项目中.gitignore文件中不被git托管的文件,以确保只有被托管的源文件才能作为TabNine的提示素材。然后它会使用index索引来为softmax回归模型提供有用的信息,使其可以排列出候选的补全提示信息。

这就恰恰说明TabNine是基于已有资源文件的编程习惯的,也就是说,不同的项目模块,有可能会产生不同的代码提示效果,真正做到“懂你”,有木有中结对编程的感觉?

acbff0831a4507312f8cf72c990caa07.png

比如,原文中提到,TabNine可能知道你更愿意使用“static void”而不是“void static”。

就算是第一次见过的字符,也可以顺利的提示出来,下面这张图展示了String关键字的提示效果:

3cb03e7f35e542867648c68792753e72.png

它的工作原理是这样婶的:

51515b92d0b21e0f4e1e76f72e49c4d6.png

虽然作为一个Java程序员,我并不能完全看懂上面这张图说的是啥,不过好歹贴出来供大家参考一下。总之就是,太强大了!

来自程序员的未来科技思考

这个神奇的代码提示工具来自于一个加拿大的大四学生,是他大学期间的第一款商用软件,来瞻仰一下大神的遗容,哦不!仪容:

3bdf3d3461e02ed3587ab540d5b2c9d7.png

又帅又有才华呀,真是的!

不得不说,AI已经离我们越来越近,有很多国外开发者在用过TabNine之后表示:“真不知道我离开TabNine之后还如何正视编程这件事!”,可见一款面世不到一年的代码提示工具就已经深入渗透到我们程序员的开发习惯之中。

我也不敢想象,此时此刻是否有人正在研究通过一款AI机器人来自主完成某个特定业务场景的代码实现。比如实现某种页面交互,或者进行自动的代码重构......

总之,不论是好是坏,该来的终究还是会来。

那么各位小伙伴,如果TabNine支持安装在 Eclipse、IDEA等上面的话,你会不会下载来试玩呢?评论区留言哦!

更多精彩:

对话式情景剖析,String被final修饰的真正原因!一篇足矣

为什么所有Java面试都会问到List、Set、Map?

束缚程序员工资的,从来不是什么算法和设计模式

AI时代的到来,程序员的终结?

能否成为架构师?抽象工厂模式,真正考验你抽象能力的时候到了

关注Java圣斗士,犀利的程序员IT视角,带你洞悉Java面试内幕,Java技术分享以及IT业内要闻,领略不一样的技术风景线。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐