V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dingwen07
V2EX  ›  GitHub Copilot

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

  •  
  •   dingwen07 · 2021-07-26 00:33:29 +08:00 · 6169 次点击
    这是一个创建于 977 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

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

    测试环节

    排序算法

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

    image1_sort_sort1

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

    image2_sort_sort2

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

    image3_sort_select

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

    image4_sort_insert

    归并排序似乎也没有问题

    image5_sort_merge

    快排

    image6_sort_quick

    桶排序

    image7_sort_bucket1

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

    image8_sort_bucket2

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

    image9_sort_testing1

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

    image10_sort_testing2

    image11_sort_testing3

    image12_sort_testing4

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

    image13_sort_testing5

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

    image14_sort_testing6

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

    image15_sort_testing7

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

    image16_sort_bucket3

    image17_sort_bucket4

    image18_sort_testing9

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

    image19_sort_bubble

    其他测试

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

    数据生成

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

    image20_test_list1

    遍历也能联想出来

    image21_test_list2

    字符串数组也一样

    image22_test_list3

    image23_test_list4

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

    image24_test_tuple

    写类

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

    image25_test_class_string

    接下来我想写一个Student

    image26_test_class_student1

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

    image27_test_class_student2

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

    image28_test_class_student3

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

    image29_test_class_pyprog1

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

    image30_test_class_pyprog2

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

    image31_test_class_pyprog3

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

    image32_test_class_pyprog4

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

    image33_test_class_pyprog5

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

    image34_test_class_pyprog6

    偶然发现的

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

    image35_test_others1

    总结

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

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

    有很多时候它补全的代码就是我想写的代码
    xJogger
        14
    xJogger  
       2021-07-26 10:50:41 +08:00 via Android
    跟特斯拉一样,特斯拉用电车主的实际驾驶来训练自己的自动驾驶。
    Github 可以用这玩意让百万程序员给自己训练自动编程机器。
    sky96111
        15
    sky96111  
       2021-07-26 13:34:48 +08:00 via Android
    @hronro 很难界定。看了代码以后学习到的思路不受到版权保护限制,但把开源样本投喂给 AI……
    zwithz1998
        16
    zwithz1998  
       2021-07-26 14:10:04 +08:00   ❤️ 1
    经测试,它会联想和 GitHub 上开源 repo 上完全一致的代码。。某一天照着一个 repo 的某个函数写的时候发现的
    TinyKube
        17
    TinyKube  
       2021-07-26 15:36:09 +08:00
    go 的体验就很蛇皮了
    TinyKube
        18
    TinyKube  
       2021-07-26 15:38:31 +08:00
    @TinyKube #17 同步了一下,正常了很多,
    reiji
        19
    reiji  
       2021-07-26 19:47:36 +08:00 via Android
    确实很喜感,我写 leetcode 的时候老是被剧透
    liflymark6
        20
    liflymark6  
       2021-07-26 22:09:06 +08:00
    大手子啥时候申请的啊,我这申请好多天了还没有通知呢
    maoxs2
        21
    maoxs2  
       2021-07-27 01:23:22 +08:00 via Android
    最绝的是写博客还能给你用中文联想整句话。。。
    aitaii
        22
    aitaii  
       2021-08-03 13:18:53 +08:00
    @maoxs2 这就有点骚了
    lamysafari
        23
    lamysafari  
       2021-11-02 11:20:17 +08:00
    @TinyKube 同步一下是啥意思?咋同步?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5312 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 08:28 · PVG 16:28 · LAX 01:28 · JFK 04:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.