前几天给大家介绍过一款IDEA编码自动注释工具,可以帮助小伙伴们的编程效率,想必很多人已经下载使用了,还没看过想了解下的小伙伴点这里:IDEA编码自动注释工具,让你的开发更有效率
然而此时此刻TJ君脑海中有一个大胆的想法,如果有一款工具,能反过来根据注释自动给出编程代码,是不是程序猿们都会笑的合不拢嘴,爽歪歪?
别以为TJ君说的是天方夜谭,就在前不久的 GitHub Universe 2021开发者大会上,GitHub官方正式宣布了一款名为 Copilot工具的更新。
说起Copilot这个名字,相信一直关注GitHub的小伙伴马上脑海中会浮现出今年早些时候看到的新闻。
就在今年夏天,GitHub 官方和OpenAI联合发布了一款AI自动编程工具,其名字正是 GitHub Copilot 。就像前文TJ君想的那样,通过Copilot,程序员只需输入注释,即可自动生成代码!
当时一时间在程序猿圈子里还引起了不少的轰动,但更多的是对这个工具的疑问,还因此引发了一个快速平方根倒数算法事件。
快速平方根倒数算法,是当年红极一时的雷神之锤3(Quake 3,也是TJ君当年的最爱之一)的开发者约翰·卡马克用的一段代码。
这段使用多项式逼近计算平方根的代码,至今都没什么人能明白卡马克的脑子是怎么想出来的,以至于这段代码阿注释直接是what the f***?很贴切了
而有开发者在Copilot发布后不久就发现,只要输入 快速平方根倒数算法(Fast Inverse Square Root,当然是英文)作为注释,Copilot 就会逐行逐字地重现了这段神奇的算法,一字不差,甚至连那个夸张地注释都没变。
这下子仿佛在程序猿小伙伴中间投了颗原子弹,大家都在问难道Copilot只是把别人的代码拿来复制一下就是所谓地自动生成了?
那这之后各种版权问题咋搞,万一用了Copilot生成一段代码却被人起诉了怎么办?甚至有科技公司直接宣布禁止旗下员工使用Copilot开发公司产品,就是为了减少不必要的麻烦。
一时间各种针对Copilot地非议愈演愈烈,甚至传出了自动生成内容是某个公司大佬身份证这样的消息,当然后来被澄清是一个笑话。
但是GitHub并没有退缩,认为Copilot并没有简单的抄袭其他人的内容,而是经过大量训练的AI自动生成所需代码,和抄袭完全是两回事。反正这件事情后来也么了下文,当时Copilot也只支持 Visual Studio Code。
不过前几天的这次更新之后,Copilot将全面支持Neovim 和 JetBrains IDE,包含开发者常用的 IntelliJ IDEA、PyCharm 等。同时增加了对 Java 中多行补全的支持,并计划在未来几个月内支持Python、Java、Type、Ruby 和 Go之外更多的语言,似乎真的是要大干一场。
如果想用Copilot的话,需要将 IntelliJ IDEA 和 PyCharm 升级到 2021.2 或以上版本、Neovim 的版本则需要升级成 0.6 或以上版本,并且需要安装 Node.js v12 或以上版本。
安装重启之后就可以在工具栏看到安装好的Copilot
然后登陆GitHub账号,同意相关条款
那说了那么久,这款号称可以自动编码的插件具体使用效果如何呢?就让TJ君带你领略一下或许是未来的编码趋势与潮流:
例如在项目里新建了test类,Copilot马上就会给一个建议生成的主体
此时只需要轻按一下tab键,就可以接受建议自动生成,无需手打这段代码。
同样的如果输入了一个函数标题,也会自动出现推荐的函数主体内容,一样是用tab键接受。
当然,Copilot不止会给出单一的自动编码推荐,用户可以使用Alt+]
或者Alt+[
来逐个切换不同的推荐,就像逐个挑选一件件商品一般,选中之后轻按一下tab键使用即可。
而通过Alt+Enter
可以直接打开各种推荐的列表,便于查找。
至于TJ君之前梦想的根据注释自动生成代码,有一个前提就是必须输入的注释能让机器看懂,也就是说,需要英文注释。当输入中文注释,Copilot不一定看得懂含义,毕竟中文可是博大精深滴。。。
那如果小伙伴的英语水平不错,Copilot还真的能节省不少时间,例如当用户写了如下一段关于给图像增加边框的注释:
// find all images without alternate text // and give them a red border void process() {
Copilot会自动生成相应的功能代码,感觉比自己写的还顺畅:
除了上述Alt+]
、Alt+[
、Alt+Enter
,最常见的操作还包括使用Esc
拒绝推荐和Alt + \
触发关联建议。这里TJ君提到的操作模式都是基于windows操作,如果使用MAC的小伙伴要注意将ALT键换成Option键就可以了。
TJ君觉得如果对于Copilot的使用熟练了并且对英文注释的掌握没有问题的话,Copilot真的能让编程省时省力,省却许多手打基础代码的功夫,让程序猿更多的精力花在整体架构设计或者逻辑实现上。不过到底怎么样,还是要用一用才知道,所以小伙伴们赶紧来获取仓库地址和插件下载方法,赶紧试试吧