本章涵盖了
AI 助⼿如何改变新程序员的学习⽅式 为什么编程永远不会再⼀样了 AI 助⼿如 Copilot 的⼯作原理 Copilot 如何解决⼊⻔级编程问题 AI 辅助编程的潜在危险在本章中,我们将讨论人类如何与计算机进行交流。我们将向您介绍您的 AI 助手 GitHub Copilot,这是一个使用人工智能(AI)帮助人们编写软件的神奇工具。更重要的是,我们将向您展示 Copilot 如何帮助您学习编程。我们并不期望您之前已经编写过任何程序。如果您已经编写过,请不要跳过本章,即使您已经对编程有一些了解。每个人都需要知道,现在我们有了像 ChatGPT 和 Copilot 这样的 AI 助手后,编写程序的方式有所不同,我们需要具备不同的有效编程技能。正如我们将看到的,我们还需要保持警惕,因为有时像 ChatGPT 和 Copilot 这样的工具会撒谎。
1.1 我们如何与计算机交流
如果我们先请您阅读并理解下面的代码,您会感到高兴吗?
section .text
global _start
_start:
mov ecx, 10
mov eax, '0'
l1:
mov [num], eax
mov eax, 4
mov ebx, 1
push ecx
mov ecx, num
mov edx, 1
int 0x80
mov eax, [num]
inc eax
pop ecx
loop l1
mov eax, 1
int 0x80
section .bss
num resb 1
那个怪物打印出从 0 到 9 的数字。它是用汇编语言编写的,一种低级编程语言。正如你所看到的,低级编程语言并不是人类能够轻松阅读和编写的语言。它们是为计算机设计的,而不是为人类设计的。
没有人愿意编写那样的程序,但特别是在过去,有时是必要的。程序员可以使用它来准确地定义他们希望计算机执行的操作,甚至到每个指令的细节。这种控制水平是为了从性能较差的计算机中挤取出每一点性能而必需的。例如,1990年代电脑游戏中最需要速度的部分,如《毁灭战士》和《地震》等,都是用类似前面的代码示例中的汇编语言编写的。否则,根本不可能制作这些游戏。
1.1.1 使它变得稍微容易⼀些
好的,不再说那个了。让我们继续吧。你会更喜欢阅读下面的代码吗?
for num in range(0, 9):
print(num)
这段代码是用 Python 语言编写的,这是现在许多程序员使用的语言。与低级语言汇编语言不同,Python 被认为是一种高级语言,因为它更接近自然语言。即使你还不了解 Python 代码,你可能能猜到这个程序试图做什么。第一行看起来是在处理从 0 到 9 的数字范围。第二行正在打印一些东西。很难相信这个程序,就像汇编语言的怪物一样,应该打印从 0 到 9 的数字。不幸的是,它出了些问题,实际上并没有打印出从 0 到 9 的数字(而是打印出了 0 到 8)。
虽然这段代码更接近英语,但它并不是英语。它是一种编程语言,就像汇编语言一样,有着特定的规则。就像前面的代码一样,对这些规则的细节误解可能导致程序出错。
与计算机进行自然语言交流是沟通的圣杯,比如使用英语。在过去的 70 年里,我们一直在使用各种编程语言与计算机交流,不是因为我们想要,而是因为我们必须这样做。计算机对于英语这样的语言的变幻莫测和特殊性来说,简直没有足够的能力。我们的编程语言有所改进——从符号混乱的汇编语言到 Python,例如——但它们仍然是计算机语言,而不是自然语言。这正在改变。
1.1.2 使其变得更加容易
使用 AI 助手,我们现在可以用英语提出我们想要的东西,并得到计算机代码作为回应。为了得到一个正确的 Python 程序,能够打印出从 0 到 9 的数字,我们可以用普通的英语语言向我们的 AI 助手(Copilot)提问,就像这样:
# Output the numbers from 0 to 9
Copilot 可能会通过生成类似以下内容来回应这个提示:
for i in range(10):
print(i)
与我们之前展示给你的例子不同,这段 Python 代码实际上是可行的!
AI 编码助手可以用来帮助人们编写代码。在这本书中,我们将学习如何使用 Copilot 来为我们编写代码。我们将用英语提出我们想要的内容,然后我们将得到 Python 代码的返回。
此外,我们将能够将 Copilot 作为我们工作流程的无缝一部分使用。没有像 Copilot 这样的工具,程序员通常会打开两个窗口:一个用来编写代码,另一个用来询