GitHub Copilot 体验:远超预期,但饭碗还在

2021-07-26 00:33:29 +08:00
 dingwen07

前言

前几天收到邮件告诉我可以使用 GitHub Copilot 了,简单地体验了一下。图片中灰色的字体是 Copilot 补全的。

测试环节

排序算法

首先试一下直接用“sort”,可以看到联想出的方法使用了 Python 内置的排序

同时也告知了可以用快捷键切换推荐或者接受

既然“sort”用的是默认排序那试试指定算法,可以看到能够联想出指定的算法

好家伙,离谱起来了,输了个“def”就联想出了插入排序

归并排序似乎也没有问题

快排

桶排序

Alt+[/]切换推荐可以看到不同的写法

现在排序算法生成完了,需要测试,换两行后

它发现了我想要测试,于是推荐了一些代码用于测试(虽然数据非常不对)

下面是我只按TabEnter得到的代码

很明显测试用的数据不对劲,选择第 90 行并切换推荐([4, 5, 3, 1, 2]也是 Copilot 推荐的),更正完第一个之后后续所有测试数据均能够正确联想

运行程序,发现桶排序出错了

更换推荐,这个看起来不错,稍加修改,就好了

忘了最重要的冒泡排序,也没有问题

其他测试

接下来看看实际写代码时表现怎么样

数据生成

如果我想生成一个数组用于测试,那会很方便

遍历也能联想出来

字符串数组也一样

不仅是数组,元组也是可以的

写类

能根据类名猜成员变量并自动帮你写内置方法

接下来我想写一个Student

构建器和成员变量看起来不错,假如我还需要一个__str__方法

接下来需要测试一下这个类,测试数据的生成非常智能,连自己写的类都可以

再写一个类,这个类需要实现传入 Python 脚本文件路径,读取并保存内容和文件名。Copilot 一开始没有猜中我想干啥,但是我们继续。

设置构建器参数后,它猜的准了一些,但还没完全猜中

当我输入到一半的时候,它完全猜中了我想干啥并正确地补全代码,甚至还在下一行为我推荐保存文件路径(图片没有展示)。

接下来它知道了我想要读取文件内容,并正确地进行了补全

另一个用于打印的内置方法也能自动推荐,我只需要按照我的需求稍加改动即可

测试数据生成也一如既往的给力

偶然发现的

写一个脚本的时候发现很多常用的语句都能自动补全,比如写入文件时需要判断路径是否存在,而我在写到一半的时候 Copilot 就完整地联想了整个代码段

总结

Copilot 应该能够一定程度上提高写代码的效率,它的智能化超出了我的预期,之前还以为只能用来自动写一些常用的方法。在体验过程中我还发现它会学习用户写的代码(风格),变得越来越好用。当然 Copilot 不能帮你自动写代码,从需求直接生成代码还是不可能的(饭碗还在)。

6438 次点击
所在节点    GitHub Copilot
23 条回复
ZRS
2021-07-26 01:16:29 +08:00
应该会是个不错的补全工具
hronro
2021-07-26 02:04:35 +08:00
补全的代码全部都没有遵循原 License,迟早要丸
IgniteWhite
2021-07-26 02:11:41 +08:00
楼主的帖子做的真好!
0ZXYDDu796nVCFxq
2021-07-26 02:22:10 +08:00
试下 red_black_tree,看能不能自动补个红黑数的实现,哈哈哈
zooo
2021-07-26 02:45:18 +08:00
我的申请为啥还没通过,好想试试
dangyuluo
2021-07-26 06:23:53 +08:00
赞,还在 waitlist 里等着呢。
codehz
2021-07-26 07:10:26 +08:00
(这玩意配合 TypeScript 还能根据类型补全 WebGL 的 Uniform 方法名字呢,根本不需要什么 WebGL 框架也能玩的很舒服)
还有可以在 ts 文件里补全嵌入在 literal 字符串里的 glsl 代码,甚至自动随后生成读取 uniform 位置的调用。。。
(虽然对于严肃项目来说可能用处不大,但是对于快速做出 PoC 来说意义重大,基本省去了专门寻找一个包装库的时间
rashawn
2021-07-26 08:45:01 +08:00
Sin
2021-07-26 08:48:25 +08:00
思想不受著作权法保护,解释成根据原代码的思路重写的自己的代码好像也没问题
事实上人好像也是这么写代码的,具体案例具体分析了
这玩意搞不好会影响开源运动的方向...
lqzhgood
2021-07-26 09:04:58 +08:00
vscode js 安装后不能补全括号了。 就是输 `{` 不会自动补全 `}` 并挪动光标到中间
IvanLi127
2021-07-26 09:07:26 +08:00
@lqzhgood #10 同问题,有点郁闷
abersheeran
2021-07-26 10:00:02 +08:00
@lqzhgood @IvanLi127 安装之后 Python 也是这样。
ayase252
2021-07-26 10:39:53 +08:00
确实不错,好像还能联想上下文

有很多时候它补全的代码就是我想写的代码
xJogger
2021-07-26 10:50:41 +08:00
跟特斯拉一样,特斯拉用电车主的实际驾驶来训练自己的自动驾驶。
Github 可以用这玩意让百万程序员给自己训练自动编程机器。
sky96111
2021-07-26 13:34:48 +08:00
@hronro 很难界定。看了代码以后学习到的思路不受到版权保护限制,但把开源样本投喂给 AI……
zwithz1998
2021-07-26 14:10:04 +08:00
经测试,它会联想和 GitHub 上开源 repo 上完全一致的代码。。某一天照着一个 repo 的某个函数写的时候发现的
TinyKube
2021-07-26 15:36:09 +08:00
go 的体验就很蛇皮了
TinyKube
2021-07-26 15:38:31 +08:00
@TinyKube #17 同步了一下,正常了很多,
reiji
2021-07-26 19:47:36 +08:00
确实很喜感,我写 leetcode 的时候老是被剧透
liflymark6
2021-07-26 22:09:06 +08:00
大手子啥时候申请的啊,我这申请好多天了还没有通知呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/791705

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX