ChatGPT 会写代码吗?以下是如何使用它进行软件开发

举报
yd_256599374 发表于 2023/04/18 19:10:52 2023/04/18
【摘要】 如果您曾经尝试过从头开始编写代码,您可能已经知道它包括逻辑推理、重复输入和修复错误。由于这些原因,与可以帮助您提出想法并解决意外错误的编码合作伙伴合作通常会更容易。幸运的是,ChatGPT可以免费做到这一点。无论您是需要编写代码还是审查现有代码库,ChatGPT 几乎在一夜之间就已成为软件开发的宝贵工具。因此,在本文中,让我们仔细研究一下 ChatGPT 的编码功能以及如何将其用于您自己的项...
ChatGPT 库存照片 7

如果您曾经尝试过从头开始编写代码,您可能已经知道它包括逻辑推理、重复输入和修复错误。由于这些原因,与可以帮助您提出想法并解决意外错误的编码合作伙伴合作通常会更容易。幸运的是,ChatGPT可以免费做到这一点。无论您是需要编写代码还是审查现有代码库,ChatGPT 几乎在一夜之间就已成为软件开发的宝贵工具。

因此,在本文中,让我们仔细研究一下 ChatGPT 的编码功能以及如何将其用于您自己的项目。

ChatGPT 知道哪些编程语言?

ChatGPT 的底层大语言模型是在数十亿文本样本上训练的,其中大部分来自互联网。现在有这么多致力于编写代码的网站,可以肯定地说 ChatGPT 对主要编程语言略知一二。要获得更多数据支持的答案,请考虑以下来自公共 GitHub 存储库的流行编程语言列表:

  • Python
  • 爪哇
  • JavaScript
  • C/C++/C#
  • PHP
  • 红宝石

当然,这绝不是一个详尽的清单。一般来说,您会发现 ChatGPT 会以更古老、更成熟的语言提供有效的代码,因为它有更多的培训来支持它。这并不是说您不能将它用于像 Kotlin 这样的较新语言,只是结果可能不会那么令人印象深刻。


一种可能提高 ChatGPT 编写代码能力的方法是使用最新的GPT-4 模型。它目前是一项可选功能,但它极大地提高了聊天机器人的功能。不幸的是,访问 GPT-4 需要订阅ChatGPT Plus,每月收费 20 美元。为了简单起见,我们将在整篇文章中使用免费版的 ChatGPT;只知道您可以期待使用 GPT-4 获得更好的结果。

如何使用ChatGPT写代码

chatgpt 你是谁 库存照片

您可以通过几种不同的方式使用 ChatGPT 编写代码。但无论采用何种方法,请记住代码的有用性将完全取决于您的输入提示。换句话说,您必须准确说明您希望从最终产品中获得什么——输入提示越详细越好。

要记住的另一件事是,即使您可以要求 ChatGPT 编写整个应用程序或项目,但这可能不是最佳策略。你看,聊天机器人很容易出错,所以最好生成简短的片段并验证每个片段是否有效。在这一点上,还值得注意的是 ChatGPT 的训练数据已有将近两年的历史,因此您可能会遇到过时的约定和链接。我们很快就会强调一个这样的例子。



目前,ChatGPT 可以通过以下几种方式帮助您编写代码。

使用 ChatGPT 编写代码

chatgpt 创建网站 1chatgpt 创建网站 3chatgpt 创建网站 2

让我们从一个涉及一些 JavaScript、HTML 和 CSS 的简单示例开始。我要求 ChatGPT 创建一个网站,显示特定股票的当前交易价格。或者在这种情况下,标准普尔 500 指数。

在它的第一次尝试中,ChatGPT 生成了一些看起来可以工作的代码,但我对它的方法不太满意。具体来说,我不喜欢这样的代码调用外部 JavaScript 库 jQuery。所以我问 ChatGPT 是否可以取消该要求并改用 vanilla JavaScript。聊天机器人在没有任何 jQuery 的情况下强制生成代码,如您在第二个屏幕截图中所见。


ChatGPT 也可以优化它生成的代码,只需提及您的个人喜好即可。

ChatGPT 的网站代码是否有效?是的,只要我按照它的指示去做。你看,获取特定股票的实时价格需要连接到第三方网站。ChatGPT 使用了 Alpha Vantage 的 API,因此我需要注册自己的访问密钥并将其添加到代码中。有了这个,我就有了一个显示标准普尔 500 指数当前价格的工作网页。

chatgpt 创建网站 结果

从这点开始,我可以根据自己的需要修改网站或者请ChatGPT进一步完善代码。例如,我可以要求它包含一个股票列表,而不仅仅是显示标准普尔 500 指数,并让页面每隔几分钟自动刷新一次。这样一来,我将始终拥有最新价格,而无需每次都手动刷新。

使用ChatGPT讲解一个功能

chatgpt python函数详解1chatgpt python函数详解2

您是否遇到过一段您不完全理解的代码?ChatGPT 可以提供帮助。您可以像我在上面的屏幕截图中所做的那样,简单地复制并粘贴提示中的函数并要求解释。我将 Python 代码编写为 Telegram 聊天机器人的一部分,它会在用户请求时随机发送XKCD 漫画。


如您所见,它确定了函数的上下文,甚至写下了逐行细分。ChatGPT 还准确地指出代码使用了python-telegram-bot 库,尽管我没有明确提及它。

改进或简化代码

chatgpt 改进 python 功能 1chatgpt 改进 python 函数 2

上面的示例展示了 ChatGPT 如何理解函数,但它可以改进您已经编写的内容吗?是的,它也做得很好。继续上述获取随机 XKCD 漫画的功能,我询问 ChatGPT 是否有任何方法可以改进我的代码。

令我惊讶的是,ChatGPT 设法提供了真正有用的建议,它甚至重写了包含所有修复程序的功能。并排比较时,更新后的功能显然更胜一筹。它包括正确的错误处理,遵循 Python 的变量约定,甚至包括注释。


将代码从一种语言转换为另一种语言

chatgpt 将 python 函数转换为 javascript 1chatgpt 将 python 函数转换为 javascript 2

如果您使用过多种编程语言,您就会知道一种并不总是比另一种更好。但是,如果您有一段现有的代码需要转换成另一种语言怎么办?ChatGPT 也可以提供帮助。

再一次,我们将继续使用我的随机 XKCD 漫画功能,并要求 ChatGPT 用 Ja​​vaScript 重写它。请记住,我用 Python 编写了原文,这是一种完全不同的语言。

ChatGPT 可以翻译编程语言,但它并不总能找到完美的替代品。

ChatGPT 按预期将语法从一种语言转换为另一种语言。但是,涉及将 Telegram 消息发送回用户的行并不准确。尽管它告诉我为 JavaScript 导入不同的库,但我没有找到支持 ChatGPT 使用的库。这让我相信 ChatGPT 要么是幻觉,要么是编造了一个看起来很有说服力但实际上不会与 Telegram 交互的 JavaScript 函数。


那么我们从这个练习中学到了什么?要求 ChatGPT 翻译代码适用于较小的块,但它可能会在某些领域出现问题。准确性在很大程度上取决于您的代码对外部库和服务的依赖程度。我敢肯定,如果我向 ChatGPT 提供一些与 JavaScript Telegram 机器人库相关的文档,它会表现得更好。

查找代码中的错误

chatgpt 错误代码 1chatgpt 错误代码 2

调试可能是一个耗时的过程,但如果您在初始提示中包含代码,ChatGPT 可以解决这个问题。对于这个例子,我要求它生成一段有问题的 Python 代码并指出它的缺陷。

为什么我的 ChatGPT 代码不起作用?

ChatGPT 库存照片 10

正如我们在上面的示例中看到的,ChatGPT 并不总是生成现成可用的结果。事实上,它甚至会犯下根本无法运行代码的重大错误。以下是可能发生这种情况的几个原因以及如何解决这些问题:

  1. 语法错误:如果代码无法运行或根本无法编译,那么 ChatGPT 很可能犯了一个明显的错误。只需复制错误并在后续提示中寻求有关如何修复它的建议。有了足够的上下文,聊天机器人可能会在第一时间了解它做错了什么,并提供一个实际有效的修订版本。
  2. 缺少依赖项:ChatGPT 可能会在调用或引用外部库或模块的地方生成代码。在编程中,库是指可以导入到项目中的代码集合。这些可能需要在运行代码之前安装,因此如果代码依赖于任何依赖项,请询问 ChatGPT。
  3. 过时信息:如前所述,ChatGPT 不知道 2021 年后发生的任何事情。因此,您很可能正在使用 ChatGPT 根本无法解释的更新版本的库、语言和其他工具。对此没有简单的解决方案,但您可以尝试通过一系列提示使用更新的信息来指导它。或者,您可以使用Bing Chat试试运气,因为它具有搜索互联网的能力。
  4. 字符限制:如果您尝试生成一个复杂的程序,它很可能会在某个时刻突然停止。这是因为ChatGPT 的隐藏字符限制,目前徘徊在 4,000 个字符左右。要克服此限制,只需请求代码块并在代码编辑器中将它们拼凑起来。

如果这些限制对您来说似乎是一个交易破坏者,请记住还有其他 AI 支持的选项。他们中的一些人也更有能力。例如,GitHub Co-pilot 在我们的ChatGPT 编码替代方案推荐列表中名列前茅。那是因为它已经在大型代码库上进行了显式训练,这使得它在编写代码时比 ChatGPT 准确得多。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。