GitHub Copilot 的 8 个你意想不到的用途

世界各地的开发者都在使用 GitHub Copilot 来加速开发并提高开发效率。GitHub Copilot 面向全球开发者开放,我们发现了一些有趣且实用的示例,展示了开发者如何利用 GitHub Copilot 做一些你可能意想不到的事情。

与其他人工智能结对编程工具类似,GitHub Copilot 正在改变软件开发的方式。GitHub Copilot 是一款人工智能结对编程助手,它能帮助你更快地编写代码,减少工作量。我们使用“人工智能结对编程助手”和“Copilot”这两个术语,是为了强调这款工具离不开你——开发者!它并非魔法,也无法读懂你的心思,尽管有时感觉好像可以。然而,GitHub Copilot 能够根据我的项目上下文和风格规范提供代码补全建议,从而显著提升我的编程速度和信心。

最棒的是,你还可以使用 GitHub Copilot 来提高编码速度和信心!2022 年 6 月,我们向所有个人开发者开放了 GitHub Copilot 。你可以在这里了解如何开始使用 GitHub Copilot 。

如果不是读心术,也不是魔法,那它是如何运作的呢?

OpenAI Codex是一款机器学习模型,可以将自然语言翻译成代码,它为 GitHub Copilot 提供支持,能够从注释和代码中提取上下文信息,并在您输入时建议具体的代码行和完整的函数。Codex 是 GPT-3(生成式预训练 Transformer 3)的一个版本,专门针对编程任务进行了微调。一些您喜爱的应用,例如 Duolingo,就使用 GPT-3 来进行语法纠错。

如需了解 GitHub Copilot 的工作原理及其有效性的更多信息,请查看以下资源:

  • GitHub Copilot 研究复述
  • GitHub Copilot 如何帮助提高开发者效率
  • 研究:量化 GitHub Copilot 对开发者生产力和幸福感的影响

GitHub Copilot 的意外但宝贵的用例

安装完成后,该扩展程序会在您输入代码时提供代码建议,但接下来该做什么呢?如何才能最大限度地利用 GitHub Copilot 扩展程序?

首先,我建议编写清晰易懂的注释,以帮助你的AI结对程序员生成所需的解决方案。但如果你有兴趣探索GitHub Copilot的一些你可能没想到的用法,我们整理了一些在与开发者交流中看到的有趣且有价值的用例。希望以下示例能给你带来灵感!

1. 帮助非英语母语人士

GitHub Copilot 可以理解英语以外的其他语言!这对所有背景的开发者都很有帮助,因为编程语言大多基于美式英语。例如,CSS 属性color是基于美式英语的,因此对于以英式英语或加拿大英语为母语的人来说,拼写为“colour”会比较陌生。忘记正确的拼写和语法往往会导致拼写错误、意外错误和时间浪费。

在下面的 GIF 动图中,我用西班牙语写了一条评论“importar”,意思是“导入”。GitHub Copilot 迅速补全了我的西班牙语评论,并按照评论中的描述导入了必要的库。

演示 GitHub Copilot 如何解读西班牙语评论。

此外,GitHub Copilot 还有助于将英文单词翻译成其他语言。Twitter用户MilMikDev使用 GitHub Copilot 将单词数组“answer”、“question”和“date”翻译成了多种语言。

演示如何使用 GitHub Copilot 将单词数组“answer”、“question”和“date”翻译成各种语言。

2. 创建包含查找数据的字典

GitHub 开发者关系副总裁Martin Woodward向我们分享了这个小技巧!GitHub Copilot 非常擅长创建查找数据字典。您可以尝试编写一条注释,指示 GitHub Copilot 创建一个包含两位字母 ISO 国家/地区代码及其所属国家/地区名称的字典。编写注释和前几行代码应该可以帮助 GitHub Copilot 生成所需的结果。请参阅下面的 GIF 动画以了解其工作原理!

演示如何使用 GitHub Copilot 创建包含两位字母 ISO 国家代码及其贡献国家名称的字典。

3. 测试你的代码

编写测试是软件开发生命周期中至关重要但有时又十分繁琐的步骤。GitHub Copilot 在模式识别和模式补全方面表现出色,因此可以加快编写单元测试、视觉回归测试等测试的过程。

请查看以下资源,了解更多关于使用 GitHub Copilot 进行测试的信息:

  • 使用 GitHub Copilot 实现测试自动化——GitHub Star Colby Fayock在 Applitools 博客文章中分享
  • 使用 GitHub 让测试变得轻松——Applitools 网络研讨会(由我主讲)
  • 利用 AI 和 GitHub Copilot 编写更好的测试——CodeCov 博客文章

4. 使用正则表达式匹配模式

有了 GitHub Copilot,您无需花费大量时间在正则表达式练习场中摸索或在 Stack Overflow 上搜索字符串中的字符组合。您只需编写注释或函数名即可触发 GitHub Copilot 的建议。

我使用 Copilot 来帮我验证电话号码!

演示如何使用 GitHub Copilot 验证电话号码。

GitHub Copilot 可以帮助您从字符串中删除空格!

演示如何使用 GitHub Copilot 从字符串中删除空格。

5. 技术面试准备

虽然这听起来可能不太寻常,但包括我在内的开发者都会使用 GitHub Copilot 来准备面试。

策略如下:

  • 首先,我尝试在不使用 GitHub Copilot 的情况下解决这个问题。
  • 如果我在解决问题时感到非常困惑和沮丧,我会启用 GitHub Copilot,并利用它来产生更好的解决问题的想法。
  • 随后,我将删除 GitHub Copilot 生成的代码,停用 GitHub Copilot,并根据新的信息再次尝试寻找解决方案。

通过这种方法,即使想要放弃,我也能保持动力。即使没有导师或同伴指导,我也不会放弃,反而能获得新的视角。GitHub Copilot 成了我的线上导师。但是,请注意,我强烈建议不要在面试期间启用 GitHub Copilot(那可是作弊!)。

有趣的是,棋手在备战比赛时也采取类似的方法。棋手们通常会与人工智能引擎对弈以提升棋艺。在《迈向数据科学》一书中,Bharath K写道:“人工智能已经影响了顶级棋手的对弈方式。大多数特级大师和超级特级大师(国际棋联等级分超过 2700 分)都会利用这些现代人工智能国际象棋引擎来分析自己和对手的棋局。” 点击此处了解更多关于人工智能国际象棋引擎的影响。

如果人工智能能够帮助国际象棋棋手提高棋艺,那么它或许也能通过挑战开发者以不同的方式思考问题,从而对他们的解决问题的能力产生积极影响。

您可以点击此处了解更多关于如何利用 GitHub Copilot 解决算法问题的信息。在下面的示例中,我写了一条注释:“编写一个二分查找算法”,以及我的函数的第一行代码。GitHub Copilot 正确地完成了该函数。

代码编辑器截图,显示 GitHub Copilot 根据注释和函数的第一行代码正确完成了函数。

6. 发送推文

当然,你可以直接使用 Twitter 应用发送推文,但通过 IDE 发送推文更有意思!作为一名开发者布道师,我的工作之一就是创建演示。在最近的一次直播中,我需要演示如何在 Python(一种我很少使用的语言)中结合 GitHub Copilot 使用 Twitter API v2。GitHub Copilot 帮了我大忙,在我写了几条注释后就自动生成了所需的代码。如果你也想尝试用 GitHub Copilot 发送推文,可以阅读我的开发者博文

Rizel Scarlett 的一条推文截图,内容为:“我用 Copilot 写了这条推文,我现在在 KCDC。”

7. 退出 Vim

对于刚接触 Vim 的开发者来说,如何退出编辑器是一个常见问题。退出 Vim 的困扰如此普遍,以至于在网上都成了梗!由于 GitHub Copilot 已集成到 Visual Studio Code、JetBrains 和 Neovim(一个基于 Vim 并添加了额外功能的衍生版本)中,因此你可以使用 GitHub Copilot 退出 NeoVim。在下面的视频中,Brian Douglas就使用 GitHub Copilot 退出了 NeoVim,他编写了一条评论,内容是“如何退出 Vim?”

 

8. 使用 Copilot Labs 管理新的代码库

GitHub Copilot Labs是 GitHub Copilot 的一项配套扩展功能。GitHub Next团队开发了 GitHub Copilot Labs,这是一个实验性的侧边栏,旨在帮助开发者将代码从一种编程语言翻译成另一种编程语言,并提供代码片段的逐步解释。

构建新代码库的心理模型并非易事,但 GitHub Copilot Labs 中的这两个功能可以提供帮助。通过将代码片段翻译成开发者更熟悉的语言,并使用“Explain”功能来理解代码,开发者可以更好地理解复杂的代码块。

通过演示如何使用 Copilot 的“Explain”功能来理解代码,开发人员可以更好地理解复杂的代码块。

近距离观察使用 Copilot 的“解释”功能后的结果。

包起来

正如您在上面的示例中所看到的,GitHub Copilot 可以帮助您在日常工作中以多种方式提高效率(其中许多功能我们仍在不断探索!)。我想提醒您,GitHub Copilot 是一款 AI 结对编程工具,因此就像您对待同事的代码甚至自己的代码一样,在将生成的代码推送到生产环境之前,请务必进行审查!虽然 GitHub Copilot 功能强大,但有时也会出现错误或引用过时的 API 版本。尽管如此,GitHub 团队仍在不断努力,并从用户反馈中学习,以开发出更好的用户体验,并利用 GitHub Copilot 生成更优质的结果。我很高兴能够见证并体验 AI 结对编程工具的演进。

评论