发布于 

浅试GithubCopilot

GitHub Copilot基于 GitHub 及其他网站的源代码,可根据上文提示为程序员自动编写下文代码。

最近逛论坛发现好多大佬上手了Copilot 我也赶紧去申请了一下试试。

官网:https://copilot.github.com/

不过有好多分析说是抄袭的代码,管他呢,反正我这水平谈不上抄袭。

越是你写起来枯燥乏味的代码,Copilot 补全就越准确

测试

java

RJILmE.gif
RJIiV9.gif

python

RJI2oP.gif

C++/C

RJI65T.gif
RJ6IPg.gif

举几个 Copilot 出彩的典型场景:

来自知乎

1. 打印日志

比如,在 Java 里用 Slf4j,每次想打印一个变量都需要写一长串代码。

有了 Copilot 之后,刚打出 log 时,Copilot 就自动补全了后面的部分,而且打印的变量也是正确的(不奇怪,因为一般都是想打印最近赋值过的变量):

1
2
3
4
// 输入
log
// Copilot 补全
log.info("someVariable: {}", someVariable);

这样节省了很多时间,编码体验变得十分流畅。

2.配置文件

比如某个 Node.js 项目包含很多独立打包的 package,使用这些 package 时需要在 package.json 配置文件里加上一行配置。由于重复性很强,Copilot 补全的效果也很好:

1
2
3
4
// 输入
"@company/package-f
// Copilot 补全
"@company/package-foo": "workspace:packages/path/to/foo"

这些配置文件改起来很枯燥,Copilot 可以很好地免除这个烦恼。

3. 模板代码

例如在 React 中,每次使用 useState 都要写一个模板性的初始化代码。如果第一个变量名是 someVariable,那么第二个一定是 setSomeVariable。这种根本不需要动脑子的东西,最适合 Copilot 补全了:

1
2
3
4
// 输入
const [someVariable
// Copilot 补全
const [someVariable, setSomeVariable] = useState('');

非常痛快,少打了很多字。

4. 某些有规律的表达式

有一次我想判断某个位置是否位于一个区域的中心 50% 部分,刚写了前半截,Copilot 就准确地补全了后面:

1
2
3
4
// 输入
if (x < startX + 0.25 *
// Copilot 补全
if (x < startX + 0.25 * SIZE || x > startX + 0.75 * SIZE) {

基于gpt3的预训练模型,目前已经支持python js ts ruby go等,verilog应该是用不起来。

gpt3 参数量有3.4B-175Billion等几种,如果175B的,一般的芯片调用一次在100ms-10s级别(受限于算力和memory带宽),的确无法免费规模应用。

不过像我这种初学者还是把它关掉最好,不然怎么接受新东西


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站由 @YuRuiH 创建,使用 Stellar 作为主题。