GitHub Copilot 体验:远超预期,但饭碗还在 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dingwen07
V2EX    GitHub Copilot

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

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

    前言

    前几天收到邮件告诉我可以使用 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
    楼主的帖子做的真好!
    0ZXYDDu796nVCFxq
        4
    0ZXYDDu796nVCFxq  
       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     Solana     997 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 19:06 PVG 03:06 LAX 12:06 JFK 15:06
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86