搜 索

Copilot从入门到放弃

  • 226阅读
  • 2023年02月25日
  • 0评论
首页 / 其他 / 正文

在十几年前,我读过一本神作《黑客与画家》,上面有一章的内容我记忆犹新,"机器自动写代码?不可能!",可是来到当下,技术进步的车轮滚滚向前,机器学习技术日新月异,自动写代码正在逐渐成为现实,而其中佼佼者就是巨硬和OpenAi推出的Copilot。
Copilot是一个AI编码合作伙伴,可在编码时提供自动完成建议。它是由GitHub和OpenAI合作的结果,由一个名为Codex的全新AI系统提供支持,该系统基于GPT-3模型。它可以根据命名或者正在编辑的代码上下文为开发者提供代码建议。Copilot已经接受了来自 GitHub 上公开可用存储库的数十亿行代码的训练,支持大多数编程语言,但官方建议使用 Python、JavaScript、TypeScript、Ruby 和 Go。
个人使用上,Copilot能够理解你的代码并提供一些快速的代码片段,他能够根据现有的代码来猜你需要的代码并提供。对于大多数情况下,他的建议还是很准的,不过如果是比较有新意的代码,则需要自己先写一段,然后再交给他生成。

使用准备

使用方式也很简单:
(1)首先,你要安装Idea,相信大家应该都用上了。
(2)其次,你需要安装Idea的Copilot插件,在插件商店(Plugins->Marketplace)里面搜索就可以看到了。
(3)最重要的,就是用你的Github账号登陆(Tool->Copilot),并且打开github开启Copilot(Copilot)。点击"start a free trial",按照步骤填写信息,可以白嫖2个月。

范例

使用Math.isPrime方法测试指定数字是否为质数

// 写注释然后tab就会生成代码
public class IsPrimeTest {
  // Math.isPrime(int) returns whether the given number is prime or not
  @Test
  public void testIsPrime() {
    assertTrue(Math.isPrime(2));
    assertTrue(Math.isPrime(3));
    assertTrue(Math.isPrime(5));
    assertTrue(Math.isPrime(7));
    assertTrue(Math.isPrime(11));
    assertTrue(Math.isPrime(13));
    assertTrue(Math.isPrime(17));
    assertTrue(Math.isPrime(19));
    assertTrue(Math.isPrime(23));
    assertTrue(Math.isPrime(29));
}

生成10位随机数

    // 生成10位随机数
    public static String getRandom() {
        Random random = new Random();
        String result = "";
        for (int i = 0; i < 10; i++) {
            result += random.nextInt(10);
        }
        return result;
    }
    
    // 生成yyyy-MM-ddTHH24:mi:ss+GMT格式日期
    public static String getDateTime() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        return sdf.format(new Date());
    }
    // 

输入方法名生成方法体

// 这里输入方法名convertLocalDateTimeToDate,即可生成后面的内容
    public static Date convertLocalDateTimeToDate(LocalDateTime time) {
        return Date.from(time.atZone(ZoneId.systemDefault()).toInstant());
    }

取消试用

两个月时光一晃而过,到了该付刀乐的时候了,10刀/月个人觉得还是有点小贵,流下了贫穷的眼泪。为了不被扣费,按照以下步骤取消试用:

  • 打开Github账单
  • Adds-on栏目下可以看到Github Copilot,右侧有一个按钮点击下拉,选择"Cancel Trial"即可取消,若你续费可以选择Change to yearly paying.

总结

目前GitHub Copilot在将代码划分为小函数、为函数参数使用有意义的名称以及边写边写好的文档字符串和注释时效果最好。当它帮助您浏览不熟悉的库或框架时,它似乎也做得最好。
但是他还不能够生成整个项目或者整个功能,目前说完全替代人工还为时尚早,但是假以时日,他再发育一下,可能近几年内就能够产生变革的效果,作为从业者的我们绝不可以掉以轻心,拥抱变化,不让变化将淘汰你。
另外插一句,巨硬现在握有一手好牌,copilot/chatgpt/bing/edge,都是很有竞争力的产品,巨硬牛逼,纳德拉牛逼。

参考资料

Copilot官网

评论区
暂无评论
avatar