探索Github Copilot:我的首次体验与收获

撰文:Dluck

封面:Github 官方博客

在编程时,我们写的代码一般都是以纯文本的形式存在,未编译之前其实可以用任何文本编辑器来处理,像是系统自带的记事本也没问题。不过,选择合适的工具能够让我们的工作效率大大提升。当面对一些复杂的任务时,IDE(集成开发环境)这种生产力工具就显得特别重要了。简单来说,IDE 是一种升级版的文本编辑器,它集合了很多实用功能,帮助我们提高工作效率,比如自动补全变量、显示可能用到的函数列表、语法高亮以及提示语法错误等等。

而且,IDE 也在不断地更新换代。我第一次接触编程是学 Java,使用的是 Eclipse,当时的自动补全功能相对简单,只能提示符号和选单,对 IDE 的强大并没有太深的了解。后来开始学开发框架后,我接触到了 JetBrains 的 IDEA,发现它的提示功能更为智能,比如在数组后输入「.for」就能自动生成 foreach 循环,还能用快捷键来生成 Getter/Setter、构造函数、重载函数等。毫无疑问,JetBrains 的产品让编码变得更加高效,提供了更全面、智能的补全体验。

最近,随着 AI 技术的发展,代码补全也变得更加强大。接下来我们要介绍的 GitHub Copilot,就是一款基于 AI 的代码补全工具。

GitHub Copilot 是什么

GitHub Copilot 是 GitHub 和 OpenAI 联手开发的 AI 工具,能够在你编写代码时自动生成可能需要的代码。

它能够提取代码的上下文,并给出整行代码或整个函数的补全建议,帮助你完成以下任务:

  • 把注释转换为代码;

  • 自动填充重复的代码;

  • 编写测试;

  • 快速找到解决问题的替代方案;

  • 无需上网搜索,快速探索新的 API;

  • 根据用户的编写习惯,帮助用户更快地完成任务。

它的原理是什么呢?

我们先来了解一下 GPT-3。GPT-3(Generative Pre-trained Transformer 3)是一个用于处理自然语言的 AI 模型,完全是由 OpenAI 研发的。它通过阅读大量人类能理解的内容进行训练,理论上可以完成各种语言相关的工作,效果接近人类。已有实验证明,GPT-3 可以用于写文章、回答问题、生成代码、设计表格、开发游戏,甚至把文字描述转化为网页等等。

而 OpenAI Codex 则是基于 GPT-3 开发的,专门针对编程的 AI 模型。Codex 从公共代码库中学习人类编写的代码,来源包括 GitHub 上的公共代码仓库。官网原文是这样的:

OpenAI Codex is a descendant of GPT-3; its training data contains both natural language and billions of lines of source code from publicly available sources, including code in public GitHub repositories. (OpenAI Codex 是 GPT-3 的衍生项目;它的训练数据包括自然语言和数以亿计来自公开可用来源的源代码,其中包括 GitHub 公开仓库的代码。)

最后,GitHub Copilot 就是利用 Codex 开发的一款商业产品。GitHub 将这些算法封装起来,做成插件和网页进行推广。目前,GitHub Copilot 可以通过插件形式集成在 Visual Studio Code、Visual Studio 和 JetBrains Rider 等 IDE 中,方便我们使用。

使用 & 体验

想要使用 GitHub Copilot,首先你得注册一个 GitHub 账号。注册后,可以按照以下步骤找到并启用 GitHub Copilot:

1. 进入设置页面:在任何页面的右上角,点击你的个人资料照片,然后选择“设置”。

探索Github Copilot:我的首次体验与收获

2. 找到 GitHub Copilot 设置页面:在侧边栏的「代码、规划和自动化」区域,点击「GitHub Copilot」。

3. 启用 GitHub Copilot:在 GitHub Copilot 设置页面上,点击「启用 GitHub Copilot」。

### GitHub Copilot 使用指南:轻松设置与付费方式

首先,关于付费方式,GitHub Copilot 提供了一个为期 60 天的免费试用期,之后每月需要支付 $10。对了,如果你是学生,记得申请教育优惠,这样就可以免费使用 GitHub Copilot 了哦。

在 Rider IDE 上设置 GitHub Copilot

  1. 在偏好设置中找到并安装 GitHub Copilot 插件;

  2. 安装完成后,重启你的 IDE;

  3. 接下来,登录 GitHub,完成验证的步骤。

完成这些设置后,你会发现 IDE 会提示你可以按「Tab」键来自动补全代码,按「⌥ + ]」或「⌥ + [」可以选择不同的补全建议,非常方便!

### 编程神器:Github Copilot的使用体验

体验如何

在写代码的时候,Github Copilot会给你自动提示补全的建议,想要完成补全只需轻轻一按「Tab」键,真的是很方便。

探索Github Copilot:我的首次体验与收获

不过,有时候AI并不会一次性给出完整的代码提示。就像下面这个例子,提示代码是逐行补全的,最后形成了一个可以实际使用的函数,甚至连注释也包括了。下图展示了在Unity3D中绘制一条射线来检测前方是否有物体,只有第一行注释是我自己写的。

探索Github Copilot:我的首次体验与收获

接下来,这个例子也挺有意思:我试图将乐谱的音高写成数组时,Github Copilot也给出了它理解的音乐。

谈谈Github Copilot的优缺点

其实,Github Copilot在处理一些重复性的流行乐片段时,表现得还不错。比如,如果你输入《卡农》中的某个重复部分,它通常能够顺利补全乐谱。这说明,当我们面对那些比较固定的功能开发或者常用算法时,依赖AI来提供支持是个相当靠谱的选择。不过,如果需求复杂一点,往往它也无法独立给出完美的解决方案。GitHub团队在对一些Python函数进行测试时发现,在试了十次后,它大约有57%的概率能给出正确的答案,当然,也有时候会生成一些无法编译的代码。

Github Copilot的不足之处

使用Github Copilot一段时间后,Rediit上的大佬Colin Eberhardt提到了一些它的短板:

  1. Github Copilot有时候反应不够迅速。尽管它能在秒内给出答案,但对于那些需要快速输出的程序员来说,这速度还是显得有点慢。你可能还没等到提示就已经开始输入了,或者因为等它而中断了思路。

  2. 它的自动提示功能有时会让人感到困扰。当你想看看提示内容的同时,它又不断弹出新的信息,搞得你很难集中注意力。也许,自动模式并不是Github Copilot的“最佳使用方式”?

  3. 生成的代码质量有待提升。虽然大部分简单的功能需求都能满足,但对于经验丰富的程序员来说,可能还得花不少精力来检查它生成的代码是否靠谱。

Github Copilot的版权问题

不少人指出,Github Copilot可能会使用一些有版权的代码作为提示素材(比如Jacob Crume的文章“GitHub Copilot is Now Available for All and Not Everyone Likes It”中提到的)。少数派的作者100gle在《GitHub Copilot:革命未竟,未来可期》中也举了很多例子,最典型的就是如果你在编辑器中输入Fast inverse square root,会得到与《雷神之锤》中使用的算法一模一样的代码。

现代开源软件通常采用GPL协议,这个协议要求你也要将代码开源,并遵循GPL的条款。而通过Github Copilot生成的代码,往往我们并不知道它的作者所采用的具体协议。开源许可证的主要作用是限制软件的使用、复制、修改和再发布等,而显然,依赖AI来补全代码可能会破坏这一点。

可以想象,正如许多AI绘画工具面临的争议一样,Github Copilot因为版权问题,短期内可能难以被大型企业广泛采用。

使用建议

  • Github Copilot对初学者来说是个不错的选择,尤其是在学习不熟悉的编程语言或开发框架时,它能帮助快速掌握常用的接口调用和简单实现方案。这样一来,我们就不必为一些基础问题不停查找API手册,或者在技术博客网站上迷失在层层传送门中。

  • 在陌生领域上手时,Github Copilot也能加快你的速度。只需写些注释,它就能帮你快速生成部分业务逻辑,接着你再进行测试。当然,最终代码的可靠性仍然需要开发者自己来判断。

  • 在处理重复性工作时,它能显著提升效率。比如,写一大堆单元测试时,不能简单复制粘贴,而是需要处理一些细微的逻辑变化。再比如,当你需要重复声明一些数据类型时,Github Copilot生成的代码往往能够很好地满足需求。

总结

虽然Github Copilot无法实现“AI即将取代程序员”的梦想,但它绝对是程序员的得力助手。它的补全功能虽然没有智能到能让完全不会编程的人完成开发,但也绝不仅仅是个简单的提示工具。合理利用Github Copilot,确实能为开发者的学习和成长带来不少帮助。

当然,它也有一些不可避免的缺陷,尤其是版权问题限制了它在商业上的应用前景。对那些技术不太熟练的程序员来说,使用它可能会感到失望——就像它名字里的“Copilot”,Github Copilot更像是一个优秀的副驾驶,但最终的驾驶工作还是得由主驾驶来掌控。

最好的工具在你手中,但真正的路还得开发者自己去走。

*本文观点仅代表作者个人,不代表indienova立场,未经授权请勿转载。

标题:GitHub Copilot:你的编程好帮手,但记得掌舵哦!

说实话,GitHub Copilot就像是你编程路上的小助手,帮你解决一些难题。不过,最后的决策和方向还是得由你来把控。手上再好的工具,真正的旅程还是得靠开发者自己去探索。别忘了,虽然有了这个“wordpress采集插件”,但掌握好自己的技能才是最重要的哦!

来源:今日头条
原文标题:Github Copilot 初体验 – 今日头条
声明:
文章来自网络收集后经过ai改写发布,如不小心侵犯了您的权益,请联系本站删除,给您带来困扰,深表歉意!

发表评论