第 1 章 代码生成和自动完成 代码生成和自动完成
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
人工智能可以大大提高代码生成和自动完成的生产力和创造力。本章将探讨人工智能驱动的工具如何重新定义编码体验,将耗时的手动过程转变为互动、高效和减少错误的工作。
人工智能在代码生成中的应用不仅是为了加快开发人员的键入速度,更是为了了解他们的工作环境,推荐相关的代码片段,甚至只需最少的输入就能生成复杂的代码块。这些工具由复杂的机器学习算法驱动,能够从公共和私人数据库中的大量代码库中学习,从而不断改进其建议和准确性。
我将探讨软件工程师如何从完成特定软件开发任务的 100% 工作转变为人工智能工具贡献的审核员。这就需要确保正确输入你对这些工具的要求,并对输出结果进行彻底修改,以确保交付成果满足要求。
这些人工智能工具功能强大,令人印象深刻,但我们很容易掉入这样一个陷阱:在没有采取适当预防措施的情况下使用这些工具的输出结果--例如,在没有验证代码如何工作以及为何工作的情况下,就打开拉取请求或将代码推送到生产环境。这种粗心大意的做法会带来两个重要风险:
- 过时的代码
-
大多数人工智能工具都是在数据的基础上进行训练的,而这些数据已不再是最新的,这意味着它们可能会提出过时的框架或功能。
- 错误答案
-
大型语言模型 (LLMs)是所有这些工具的基础技术,有时会产生通常所说的 "幻觉"。这意味着它们的输出可能包括错误语句、错误或不存在的代码功能或 API 端点。
软件工程师和开发人员必须使用人工智能工具来帮助他们更好、更快地工作,但不能用它来取代自己的判断,就像我们使用自动完成功能一样,这种功能在大多数集成开发环境(IDE)。当然,只需按下制表符键而不用输入每个字符会有很大帮助,但自动完成建议的范围从完全相关到毫无用处不等。至于是使用还是放弃,就看你的判断了。
我在本章中介绍的人工智能工具也需要不断进行评估。很多时候,这些工具生成的代码可以完美地满足任务要求。而在其他情况下,代码可能只是部分完成,或者包含错误、性能问题或其他一些必须修改的缺陷。你的工作就是使用、丢弃或修改这些代码。
代码生成工具的类型
本章讨论的人工智能工具主要分为两大类,在软件开发中的用途略有不同:
- 基于浏览器的工具
-
使用这些工具(如ChatGPT),您可以登录并在浏览器中与模型进行交互。本地计算机上没有任何活动,只是通过互联网与网站进行交互。这些工具使用方便,能很好地适应更多的用例,但最大的缺点是上下文窗口有限。每次交互时,你都必须手动键入或复制/粘贴上下文到提示中,这在处理大型代码库或文档时很受限制。
- 基于集成开发环境的工具
-
这些工具,如 GitHub Copilot,可以作为插件安装在本地计算机上用来编写代码的集成开发环境中。一旦安装,它们就会嵌入到你的软件开发体验中,嵌入到你编写代码的实际环境中。这些工具最大的优点是具有大型上下文窗口:它们可以将整个代码库作为每次交互的上下文。
使用案例
数百万软件工程师正在采用人工智能工具来支持他们的日常工作。这些工具对开发产生影响的五个最突出的用例是
- 生成代码片段
-
你无需输入代码库中的每一个单词和函数,而是向人工智能工具提供代码应满足的具体要求。它能以任何一种最流行的编程语言(如 Java、Python、PHP 或 JavaScript)输出即用代码。这可以加快原型设计和开发过程。本章介绍的工具可以为各种应用生成代码,包括网络开发、数据分析、自动化脚本或移动应用。一般来说,在这种使用案例中,人工智能有助于弥合概念化与实施之间的差距,并使技术开发更方便、更高效。 ...