Copilot - 打工人,你的下岗通知书已送达

体验了一段时间的 Copilot, 来说一下用它的感受。

什么是 Copilot?

Copilot 是 github 出品的一款基于 AI 的编程辅助编程工具,通俗点的说法就是:帮你写代码。

所以在它出世的时候,不少文章写到:程序员要下岗了,程序员开发工具打败程序员 的说法。那事实真的是如此吗?我们先来看看它提供什么功能:

image.png

  1. 根据写的代码,自动补全代码
    这是主要功能,会根据开发者写的代码,自动补全后续代码
  2. 根据写的注释,自动不全代码
    如果开发者先写好注释,Copilot 会根据注释的语义,自动生成代码
  3. 根据写的代码,自动生成测试代码
    如果开发者写了个 login() 方法,在下面写 test, 将会自动完成 test_login() 相关的测试代码

实际使用

看了上面的几点主要功能介绍,感觉确实极其强大。话不多说,赶紧来试试。

申请使用

由于 Copilot 还在测试阶段,目前必须申请才能使用。这个是申请地址 ,通过之后,会以邮件的方式通知你。Copilot 目前支持下面三款 IDE, 对应的仓库地址为:

注意,安装之后会要求使用 github 账号登录,而没有通过申请的同学暂时是无法使用的,所以必须先申请再使用。

初探

由于笔者是 Android 开发,这里就以IDEA/AndroidStudio IDE,Java 语言的实际使用例子,来说明实际的使用。

代码提示

写 TAG 的时候会自动提示,其中灰色部分就是提示的代码

java 自动生成代码片段.png

java 自动添加打印字段.png

注释自动提示

写注释的时候会自动提示,第一行是我写的注释,第二行是提示的代码:

java 注释自动生成代码.png

除了这些,如果开发者写注释,不管是中英文,也会自动提示你,所以它补全的不仅仅是代码,还包含注释等。
例子太多,这里就不再一一举例。总的来说体验不错,如果开发者感觉提示不对,可以用快捷键来切换不同的提示,而且它的提示不是一成不变的,随着使用的次数增多,会根据开发者的使用习惯,给出不同的建议,总的来说符合 AI 的身份。

其他语言

Copilot 目前比较擅长的语言,除了 Java,还包括Python、JavaScript、TypeScript、Ruby 和 Go,那其他不擅长的语言又如何呢?

Kotlin

kotlin 自动生成代码:

dart 自动写 findview.png

kotlin 自动写适配器.png

Dart

dart 方法参数提示.png

dart 自动赋值.png

dart List自动转换.png

总的来说,在其他语言上,Copilot 的提示同样优秀,大家可以放心大胆的使用。

原理

Copilot 这么强大,那它是怎么实现的呢?官方的解释是: OpenAI Codex 接受过公开源代码和自然语言的培训,因此它理解编程和人类语言。 GitHub Copilot 编辑器扩展将您的评论和代码发送到 GitHub Copilot 服务, 然后该服务使用 OpenAI Codex 来合成和建议单个行和整个函数。

说直白一点,就是根据开发者写的代码,将开发者写的代码片段,发送到服务器,然后根据 Github 上公开的源代码,给出最佳建议,然后返回给开发者。原理的核心就是 AI,以及 Github 上的大量源代码 提供的训练数据。

安全隐患

上文的原理讲到,Copilot 将发送你的代码片段到它的服务器,那会不会有安全隐患呢?我们来看看它的声明:

开发者个人的代码片段不会共享给其他用户

docs.github.com/en/github/c…

存储的代码片段会加密,包括你的url,数据库地址,账号密码等:

docs.github.com/en/github/c…

数据的访问会被严格的限制,仅限于以下成员能访问:

  1. 在 GitHub Copilot 团队或 GitHub 平台健康团队工作的指定 GitHub 人员(员工和承包商)访问
  2. 在 Azure 上工作或与 Azure 一起工作的 Microsoft 人员(员工和承包商)和/ 或 GitHub Copilot 团队,以及
  3. 在 GitHub Copilot 上工作的 OpenAI 员工

docs.github.com/en/github/c…

总的来说,数据的安全是有保障的。如果处于敏感工作岗位,或者在保密要求较少的项目,最好不要使用,这方面最好对齐开发者公司的相关政策。

最后

Copilot 在体验的过程中,给我最强的感受就是,它可以很智能的帮我提示一些模板样例代码,而这些模板样例代码是普通的 IDE 的提示做不到的。
我愿称之为最强的代码提示工具,它无法代替开发者写代码,而是一个帮助开发者辅助编程的工具。

而 Copilot 的本意也是副驾驶的意思,就如它的描述中说的那样:

You’re the pilot

With GitHub Copilot, you’re always in charge.
复制代码

Guess you like

Origin juejin.im/post/7046643160688099359