世界各地的开发者都在使用 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 还有助于将英文单词翻译成其他语言。Twitter用户MilMikDev使用 GitHub Copilot 将单词数组“answer”、“question”和“date”翻译成了多种语言。

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

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 可以帮助您从字符串中删除空格!

5. 技术面试准备
虽然这听起来可能不太寻常,但包括我在内的开发者都会使用 GitHub Copilot 来准备面试。
策略如下:
- 首先,我尝试在不使用 GitHub Copilot 的情况下解决这个问题。
- 如果我在解决问题时感到非常困惑和沮丧,我会启用 GitHub Copilot,并利用它来产生更好的解决问题的想法。
- 随后,我将删除 GitHub Copilot 生成的代码,停用 GitHub Copilot,并根据新的信息再次尝试寻找解决方案。
通过这种方法,即使想要放弃,我也能保持动力。即使没有导师或同伴指导,我也不会放弃,反而能获得新的视角。GitHub Copilot 成了我的线上导师。但是,请注意,我强烈建议不要在面试期间启用 GitHub Copilot(那可是作弊!)。
有趣的是,棋手在备战比赛时也采取类似的方法。棋手们通常会与人工智能引擎对弈以提升棋艺。在《迈向数据科学》一书中,Bharath K写道:“人工智能已经影响了顶级棋手的对弈方式。大多数特级大师和超级特级大师(国际棋联等级分超过 2700 分)都会利用这些现代人工智能国际象棋引擎来分析自己和对手的棋局。” 点击此处了解更多关于人工智能国际象棋引擎的影响。
如果人工智能能够帮助国际象棋棋手提高棋艺,那么它或许也能通过挑战开发者以不同的方式思考问题,从而对他们的解决问题的能力产生积极影响。
您可以点击此处了解更多关于如何利用 GitHub Copilot 解决算法问题的信息。在下面的示例中,我写了一条注释:“编写一个二分查找算法”,以及我的函数的第一行代码。GitHub Copilot 正确地完成了该函数。

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

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”功能来理解代码,开发者可以更好地理解复杂的代码块。


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