购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

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的数字。它是用一种低级编程语言——汇编语言编写的。如你所见,低级编程语言与人们日常读写的语言相去甚远。它们主要是为计算机而设计的,并非面向人类。

没人愿意编写这种程序,但在早期,这也是不得已而为之。程序员通过这种手段细致地定义他们希望计算机执行的具体操作,细致到每一条指令。为了从性能不足的计算机中尽可能地榨取性能,这种精细的控制是必需的。20世纪90年代那些对速度要求极高的计算机游戏,例如《毁灭战士》( Doom )和《雷神之锤》( Quake ),都是采用上面那种汇编语言编写的。如果不这样做,这些游戏根本开发不出来。

1.1.1 让难度降低一点儿

好的,汇编到此为止。我们继续。对于以下这段代码,感觉如何?

for num in range(0, 9):
    print(num)

这段代码是用Python编写的,目前许多程序员都在使用。不同于汇编语言这样的低级编程语言,Python被视为高级编程语言,因为它与自然语言的距离更近。即便你对Python代码尚不了解,或许也能猜出这段代码的目的。第一行似乎在处理0~9的数字范围。第二行进行打印操作。不难理解,这段代码的目的与上面那段汇编语言“天书”是一样的,都是想打印0~9的数字(不过很可惜,它实际上打印的是0~8)。

尽管这种代码更接近英语,但它并非英语。它仍然是一种编程语言,就像汇编语言一样,有着特定的规则。正如上面的代码所示,误解这些规则的细节可能会导致程序错误。

与计算机沟通的终极目标是能够使用诸如英语这样的自然语言进行交互。在过去70年里,我们之所以使用各种编程语言与计算机对话,并非出于个人喜好,而是迫于无奈。计算机的计算能力不足以应对英语等自然语言的复杂性和特异性。我们的编程语言虽然一直在演进(例如,从天书一般的汇编语言发展到Python),但它们依旧是计算机语言,并非自然语言。不过,这种情况正在发生变化。

1.1.2 让难度降低一大截

有了AI助手,我们现在可以用英语提出自己的需求,并让计算机生成相应的代码。如果希望得到一段正确的打印0~9的数字的Python代码,可以用英语向AI助手(Copilot)发出指令。

# Output the numbers from 0 to 9

对此,Copilot可能会根据这一指令生成如下代码。

for i in range(10):
    print(i)

不同于1.1.1节的示例,这段Python代码能够正常运行。

AI助手能够帮助人们编写代码。在本书中,我们将探索如何利用Copilot来编写代码。我们只须用英语描述需求,便能收到用Python编写的代码作为回应。

更重要的是,我们将能够把Copilot无缝集成到工作流程中。在没有Copilot这类工具的情况下,程序员通常需要同时打开两个窗口:一个用于编写代码,另一个用于在Google上查询编程方法。在第二个窗口中,可能充斥着Google搜索结果、Python文件或程序员论坛上讨论如何解决特定编程问题的帖子。他们经常需要从这些结果中复制代码到自己的项目中,随后进行适当的调整以符合自己的应用场景,尝试不同的解决方案等。这已经成为程序员生活的一部分,但你可以想象这种工作方式的效率有多低。据估计,程序员可能有多达35%的时间花在搜索代码上 [1] ,而且找到的代码并不是立即可用的。有了Copilot的协助,我们编写代码的困难将得到显著改善。 z275p4UBMnML9ilI8zmUMexffK6jUfg3O0Juru2i0twsuYgUw7HtS0/prKpdOnWn

点击中间区域
呼出菜单
上一章
目录
下一章
×