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

1.2 本书涉及的技术

在本书中,我们将主要用到两种技术——Python和GitHub Copilot。

Python是一种编程语言,用于与计算机进行交流。人们使用它编写各种程序来完成有用的事情,例如,开发游戏和交互式网站、数据可视化、文件管理应用及自动化常规任务等。

编程语言还有很多种,包括Java、C++、Rust等。Copilot也支持这些编程语言,但截至目前,它对Python的支持最为出色。相对于其他许多语言(尤其是与汇编语言相比),Python代码写起来要简单得多。更为重要的是,Python更易于 阅读 。毕竟,编写Python代码的将不是我们,而是我们的AI助手。

实际上,计算机并不能直接读取或执行Python代码。它们唯一能够理解的是所谓的“机器码”,这种代码比汇编语言代码还要难以理解,因为它是汇编语言代码的二进制形式——没错,就是一连串的 0 1 。在幕后,计算机将接收人们提供的任何Python代码,并在执行之前把它转换成机器码,正如图1.1展示的那样。

图1.1 在屏幕上看到输出之前,Python程序需要经历的几个步骤

1.2.1 Copilot,你的AI助手

什么是AI助手?AI助手是一种人工智能代理(AI Agent),它帮助你完成任务。你可能在家里使用Amazon的Alexa设备,或拥有一台集成了Siri的iPhone——这些都属于AI助手。这类助手能帮你订购生鲜、查询天气或确认那位在《哈利·波特》电影中饰演Bellatrix的女演员是否也参演了《搏击俱乐部》电影。AI助手只不过是响应人类语音和文本输入的计算机程序,并以类人的方式给出答案。

Copilot是一款能执行特定任务的AI助手:它能将英语转换成程序代码(我们很快就会看到,它还能做更多的事情)。与Copilot功能类似的AI助手还有不少,例如CodeWhisperer、Tabnine和Ghostwriter等。我们选择Copilot作为本书主角的原因,是基于它生成代码的质量、稳定性(它从未发生过崩溃)及我们个人的偏好。我们也鼓励你在合适的时候探索其他工具。

1.2.2 一分钟搞懂Copilot的背后原理

你可以把Copilot想象成你与正在编写的程序之间的一个中介层。你不必直接编写Python代码,只须用文字描述你想要的程序功能(这些文字称作“提示词”),Copilot便能生成相应的程序代码。

Copilot的智能引擎是一种精妙的计算机程序,名为大语言模型(Large Language Model,LLM)。这种模型掌握了单词与单词之间的内在联系,包括识别特定语境中最合适的词汇搭配,并基于这些信息预测出一段提示词后面最匹配的单词顺序是什么。

想象一下,我们请你预测这个句子中的下一个单词可能是什么:“The person opened the ________.”你可以想到很多选项,例如door、box或conversation等,但有些单词如the、it或open则显然不合适。LLM会综合考虑当前上下文来生成下一个合适的单词,并持续不断地进行这一过程,直至任务完成。

请注意,我们并没有说Copilot明白它正在做的事情。它仅仅是依靠当前的上下文来持续生成代码。在你今后的编程之路上,要始终铭记:只有我们自己能判断生成的代码是否真正实现了自己的意图。虽然大多数情况下它能够做到,但你仍然应该时刻保持适度的怀疑精神。图1.2描绘了Copilot根据提示词生成程序的过程。

图1.2 Copilot根据提示词生成程序的过程

你或许会好奇,为什么Copilot为我们编写的是Python代码,而不是直接生成机器码。这样的话,Python不就是一个可有可无的中间环节吗?其实不然,我们让Copilot编写Python代码的原因在于它可能会出错。一旦它出错,我们就需要对这些错误进行修正,相比于机器码,处理Python代码无疑要简单得多。

另外,几乎没有必要检查由Python代码转换的机器码是否准确。这在一定程度上归功于Python语言规范的确定性。我们可以畅想,或许未来Copilot已经精准到无须检查它生成的Python代码,但目前我们距离这一目标还有很长的路要走。 4xmxCtT1qHesbh1UWgFzWF0b2cF7HN759HUMWu6zUS3p3u92fo2Ql14CzCRqQNCT

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