ChatGPT:程序员学习效率倍增器?使用技巧与不足分析

4

ChatGPT:程序员学习新技术的效率助推器

最近 ChatGPT 引爆了 AI 领域的热潮。网上充斥着各种与 AI 互动的娱乐内容,但鲜有人关注如何利用 ChatGPT 解决实际问题。作为一名主要通过搜索引擎和 GitHub 自学的程序员,我与 ChatGPT 深入交流后,确信它能显著提升程序员学习新技术的效率。

在深度使用 ChatGPT 一个月后,我愈发感受到其颠覆性力量。本文将聚焦于工作和学习,分享 ChatGPT 的强大之处以及我的使用经验。

ChatGPT 的“人话”能力

搜索引擎是学习技术的常用工具。通常,我们输入关键词,然后在搜索结果中筛选和总结答案。复杂的问题需要多次迭代搜索和总结。关键词的选择至关重要,找到合适的答案也很耗时。总之,通过搜索引擎学习的效率较低。

根本原因是:搜索引擎是基于关键词的物理匹配,缺乏上下文关联和答案总结能力。

除了搜索引擎,更高效的方法是向经验丰富的大佬请教,清晰地表达问题,从而获得解答。但如果没有大佬可以请教呢?ChatGPT 可以扮演这个角色,提供问答服务。

这就是 ChatGPT 令人惊艳的地方:它能以对话的方式说“人话”。

  • 对话式:能够关联上下文,返回的内容是经过“思考”的结果,答案更精准。
  • 说“人话”:能够总结并返回结构化的结果,内容更易于理解。

在对话过程中,提问的技巧非常重要。提问方式会直接影响答案。下面分享一些我使用 ChatGPT 的技巧。

ChatGPT 使用技巧

为了从搜索引擎获得准确的结果,需要掌握关键词构建技巧。为了最大化发挥 ChatGPT 的能力,也需要一些技巧。

① 尽可能使用英文交流

学习专业技术知识时,尽量使用英文。因为新技术往往在国外更前沿,一手技术文档也多为英文。ChatGPT 学习的相关数据也更多,更有利于获得准确详尽的答案。

此外,中文文本生成比英文更复杂,因此中文交流的响应速度明显慢于英文。

② 多用反问的方式交流

多使用「我认为 xxx,你看我理解的对吗」这类句式提问,少问「xxx 是什么」这类问题。

不是说 ChatGPT 不能回答「xxx 是什么」这类问题,而是传统搜索引擎更擅长这个,还能提供更丰富的信息。

例如,初学 k8s 时,我会把自己的理解整理成一系列观点,让 ChatGPT 指出错误:

k8s理解

这种学习体验是传统搜索引擎无法提供的,就像学渣缠着学霸求带。

③ 一条消息只包含一个问题,并尽可能多地提供问题的上下文

这考验的是把问题描述清楚的能力。可以有很多方法。

例如,对于 k8s 的问题,可以先引导式提问:在 k8s 里面,所有资源都是 API Object,对吗?

得到肯定回复后,再挖坑:那么 k8s 其实就是一个存储 API Object 的数据库,对吗?

ChatGPT 会指出这样想是不对的,API Object 并不是简单的静态数据。然后根据它的回复不断追问,最终梳理清楚整个知识框架。

④ 放开思路提问,例如让 ChatGPT 通过类比、举例的方式讲解问题

ChatGPT 的能力远超以往的人工智能。我们可以尝试提出难度更大的问题。

例如,代码的解释性比文字更强,可以直接要求 ChatGPT 写一段 demo code 出来,看不懂还可以追问:

demo code

经过逐步提问,ChatGPT 确实写出了一个完整的 operator 的 demo。虽然代码偶尔出错,但通常是类似包导入这种明显的错误,整体上非常强大。

再比如,在 ChatGPT 讲解了 CRD, CR, Controller 这些 k8s 概念后,可以请它类比编程语言里的类和实例再讲解:

类比

它类比 CRD 是类定义,CR 是类的实例对象,非常贴切。

还可以让 ChatGPT 逐行解释代码,扮演 Linux shell,扮演 yaml/json 转换器等等。ChatGPT 都能胜任,确实能大幅提高效率。

以上是我认为最有价值的几个技巧。下面说说 ChatGPT 的一些不足之处。

ChatGPT 的不足

① 时效性问题

ChatGPT 只掌握了 2021 年之前的数据,因此一些最新信息会缺失,一些旧信息可能已过时。例如,我让 ChatGPT 帮我找一些链接,有些已经 404 了。

据说微软 New Bing 整合的 ChatGPT 解决了这个问题,但我还没有 New Bing 的试用资格。就技术学习而言,时效性差一点也无妨。

② 少数情况下,ChatGPT 会一本正经地胡说八道

这个问题确实存在。ChatGPT 从来都是有求必应,即使不知道,也会生成一个看起来有模有样的答案。

猜测 ChatGPT 会对没有可靠答案的问题进行推理,根据类似问题的答案推理出一个可能的答案。

例如,我让 ChatGPT 写一个用 websocket 连接 Apache Pulsar 的 code example,它二话不说就给我写了个错的。后来发现,它是把 Kafka 的 websocket 用法套用到了 Pulsar 上。

实际上,网上没有太多用 websocket 连接 Pulsar 的案例,所以 ChatGPT 没有足够的数据进行训练,写不出正确的 code example 也可以理解。

还有一次,我问 ChatGPT 如何把 MySQL 的 id 字段转化成 varchar 字符串类型。它告诉我用 Cast(id as VARCHAR(255)),结果报错,它也解释不清为啥报错。

后来一搜,原来要用 Cast(id as CHAR(255)) 的方式。看来 ChatGPT 还有一些不准确的地方,有待提升。

总结

总而言之,我认为 ChatGPT 是一个新型搜索引擎,在某些场景下能够提供比传统搜索引擎更强大、更高效的搜索效率。

完全依靠 ChatGPT 完成复杂的任务目前还不现实。例如,让 ChatGPT 写代码,目前它只能写简单的 demo,而且经常需要手工修复一些细节错误。

但让它作为搜索引擎的补充来帮助我们学习新技术,还是比较靠谱的。问答式的体验在很多场景下都优于传统搜索引擎。

我相信,像 ChatGPT 这样的 AI 技术会和搜索引擎扮演同等重要的角色。如何更好地理解并运用 AI,是未来需要不断学习探索的课题。