跳至主要内容

使用 GitHub Copilot 学习一种新编程语言

GitHub Copilot Chat 可以帮助你通过学习如何在新编程语言中编写代码来提升编程技能。

简介

GitHub Copilot 可以帮助你学习如何编码:无论你是没有任何编程经验,还是正在学习另一门编程语言。本指南专注于后者的使用场景:你已经熟悉一种或多种编程语言,现在想学习一门新语言。

先决条件

本指南假设你已经了解如何在 IDE 中使用 Copilot Chat 与 Copilot 行内建议。请参阅 在 IDE 中向 GitHub Copilot 提问在 IDE 中获取代码建议

从基础开始

使用 Copilot Chat 研究新语言的基础知识。了解该语言与已熟悉的语言有何不同。让 Copilot 告诉你在开始使用新语言编程前需要注意的主要事项。

示例提示:语言基础

以下是一些可以在 Copilot Chat 中使用的提示,帮助你学习新编程语言的基础。将 NEW-LANGUAGE 替换为你想了解的语言名称。

  • What is NEW-LANGUAGE best suited for? I am an experienced Python programmer, but I don't know anything about NEW-LANGUAGE.

  • What are the main ways in which NEW-LANGUAGE differs from other languages? Explain the most essential things I need to know as an experienced programmer who wants to learn to code in NEW-LANGUAGE.

  • How can I install NEW-LANGUAGE?

  • How does error handling work in NEW-LANGUAGE?

  • How do you manage dependencies and packages in NEW-LANGUAGE?

  • What are the most essential libraries or frameworks I should know about for NEW-LANGUAGE?

  • What testing frameworks does the NEW-LANGUAGE community typically use?

  • What are the biggest mistakes newcomers to NEW-LANGUAGE typically make with this language?

  • As an experienced programmer learning NEW-LANGUAGE, what are the things I should focus on first?

使用 Copilot 作为你的个人教练

GitHub Copilot 能为你自动撰写代码。你可以让它生成代码块、函数,甚至完整的程序。但在学习新语言时,你应避免让 Copilot 为你写大量代码——尤其是当你在未经完整理解就直接接受它的建议时。若你不熟悉该语言,就不容易判断 Copilot 提供的代码是否已达到最佳水平。相反,你应把 Copilot 当作你的个性化训练助理。

当你让 Copilot 说明在新语言中如何实现特定功能时,务必要请它解释所给出的代码。如果你对代码或 Copilot 的解释仍有疑惑,请请求更简化的说明——或要求更详细的解释——直到你确信自己已经完全理解这段代码。始终避免使用你不完全理解的任何代码。

示例提示:请求解释

NEW-LANGUAGE 替换为你想了解的语言名称。

  • 请对你之前的建议进行更详细的解释。我是 NEW-LANGUAGE 的新手,仍然不理解你提供的代码。

  • 请告诉我如何在 NEW-LANGUAGE 中编写以下 Ruby 代码: people_over_50 = people.select { |person| person.age > 50 }。请解释您建议的 NEW-LANGUAGE 代码的每个部分。

  • 为此 NEW-LANGUAGE 文件添加完整的注释,解释代码的每一部分功能。

在新语言中编写一个简单的程序

入门时,先写一个你已经熟悉的语言能够轻松实现的简单程序。可以请求 Copilot 帮忙。如果愿意,也可以让 Copilot 为你生成一个非常基础的程序,以便快速开始。随后,你可以查看代码、学习其工作原理,然后自行扩展。

示例提示:编写一个简单程序

  • 展示一个用于交互式获取用户输入并根据输入返回有用信息的 Rust 命令行工具代码。

  • 对所建议的代码进行更详尽的注释。我想了解此代码的每一部分具体作用。

  • 请提供一个用 Kotlin 编写的非常小的 Android 应用代码。

  • 为该应用提出可改进的建议。

使用注释和 Copilot 的行内建议

作为不向 Copilot Chat 请求基本代码的替代方案,你可以在编辑器中写下注释,然后观察 Copilot 给出的代码。

例如

  1. 在 IDE 中,创建一个符合所使用语言文件后缀名的文件。例如,如果你正在学习 Rust,创建一个名为 example.rs 的文件。

  2. 复制并粘贴以下注释行。

    Rust
    // NEW-LANGUAGE command line program to find the day of the week for a date.
    // The program does the following:
    // Prompt user to input string in format YYYYMMDD
    // Parse the string to check that it is a valid date.
    // If it's not, print an error message and exit.
    // Calculate the day of the week for the given date.
    // Print the day of the week to the user.
    
  3. 如有必要,请将注释语法更改为与你使用的语言相匹配。

  4. NEW-LANGUAGE 替换为你正在使用的语言名称。这以及文件后缀会告诉 Copilot 使用哪种语言。

  5. 按回车键并使用 Tab 键查看并接受 Copilot 提供的行内建议。继续接受建议,直至得到完整的程序。

  6. 阅读代码,了解其工作原理。如果有不明白的部分,请让 Copilot 解释。例如

    1. 选中一行或多行你不理解的代码。

    2. 在 VS Code 中

      右键点击所选代码,选择 Copilot > Explain

      在 JetBrains IDE 中

      右键点击所选代码,选择 GitHub Copilot > Explain This

      在 Visual Studio 中

      打开 Copilot Chat 面板,输入提示 Explain this code

向 Copilot 提出具体问题

在学习新语言的过程中,应当专注于完成特定任务的小代码单元。向 Copilot 提出明确、范围有限的问题,以帮助熟悉该语言的语法和惯用法。

示例提示:具体问题

NEW-LANGUAGE 替换为你想了解的语言名称。

  • 解释在 NEW-LANGUAGE 中可以编写条件语句的所有不同方式。

  • 在 JavaScript 中我会写:The ${numCats === 1 ? 'cat is' : 'cats are'} hungry.。请问在 NEW-LANGUAGE 中该如何写?

  • 在 NEW-LANGUAGE 中,如何将字符串全部转换为小写?

  • 在 NEW-LANGUAGE 中,num++ 等价的写法是什么?

  • 如何运行用 NEW-LANGUAGE 编写的程序?

  • 如何为我的 NEW-LANGUAGE 项目编译出一个单独的可执行文件,以便作为发行版进行分发?

将现有代码转换为新语言

有效利用已有编程经验的一种方式是挑选一段你熟悉的代码,将其转换为你正在学习的新语言,然后观察相同操作在新语言中的实现方式。

  1. 找一段独立的代码块,例如一个函数。
  2. 请求 Copilot Chat 将其转换成你正在学习的语言。
  3. 将 Copilot 提供的代码粘贴到编辑器中新建的文件中。
  4. 并排查看两段代码,分析相同操作在新语言中的实现。有哪些相似点和不同点?
  5. 让 Copilot 解释你不理解的代码部分。

阅读新语言的现有代码

在熟悉了新语言的基础后,花时间阅读用该语言编写的已有代码。

找一个使用新语言的项目,打开其中的文件,向 Copilot Chat 请求该文件的简要概述。然后逐行阅读代码。你能理解所使用的技术吗?你了解库函数和内置函数的工作方式吗?你能跟踪数据在代码中的流向吗?

请 Copilot 解释你不懂的代码片段。

阅读完代码后,询问 Copilot 是否能提出改进建议。

避免认为 Copilot 永远是对的

Copilot 是帮助你学习新语言的工具,但——和所有 AI 助手一样——它并非万无一失。它可能会出错,甚至给出不够优化的代码。

Copilot 通过大量代码进行训练,但每种语言的建议质量取决于公开仓库中该语言的代码量和多样性。例如,JavaScript 在公共仓库中占比很高,Copilot 通常能给出准确且有帮助的建议。而对于在公共仓库中代表性不足的语言,Copilot 的建议质量可能会稍低。

始终检查 Copilot 给出的代码,并在使用前确保自己理解它。在审查代码时,寻找可以提升性能、简化实现或提升可维护性的改进点。

如果你觉得 Copilot 的建议并非最佳方案,可以让它尝试不同的实现方式。

如果运行代码时出现错误,请向 Copilot 提供错误详情并请求修复代码。

您还应检查 Copilot 是否遵循您的编码风格指南。如果没有,您可以修改仓库的自定义指令,以提示 Copilot 今后遵守您的指南。请参阅 为 GitHub Copilot 添加仓库自定义指令

示例提示:检查你的工作

  • 检查此代码的语法错误。

  • 评估此代码是否达到最佳性能。

  • 建议此代码的其他写法。

© . This site is unofficial and not affiliated with GitHub, Inc.