2022 年,人工智能领域最大的热门非 ChatGPT 莫属。作为一款聊天机器人,ChatGPT 在文字的逻辑性、观点的自洽、列举事实等方面的能力,已经超过了一般非文科大学的毕业生。
而作为一个程序员,在试用了一段时间 ChatGPT 后,发现它的代码能力也同样惊人。不仅可以根据需求直接生成代码,而且可以帮助解读代码。
ChatGPT 在编程领域的发展前景有着巨大的潜力可以挖掘。
看上去软件工程师这个群体要么没有认识到这些工具的价值,要么不知道从哪里开始。
我在下面描述 10 个使用场景。在这些场景中,ChatGPT 会让软件工程师的工作更容易或者更出色。
1. 生成模板代码
2. 研究和比较代码
3. 解释代码
4. 注释代码
5. 编写测试用例
6. 编写文档
7. 生成正则表达式
8. 使用正确的风格重写代码
9. 查找代码中的 bug
10. Leetcode 算法
1. 生成模板代码
为了从头开始建立一个新的项目,我要求 ChatGPT 使用我选择的技术、框架和版本,创建一个我需要的应用程序模板。
我甚至可以把 ChatGPT 的输出作为我的团队文档的一部分。
2. 研究和比较代码
很多时候,同一个需求会有不同的实现方式。我通常的做法是通过 ChatGPT 快速地建立多个不同的方法,并进行比较。
ChatGPT 可以很容易地为我们创建不同的方法:
1. React vs Vue
2. 算法 A vs 算法 B
这可以很容易地节省半天的工作量。
3. 解释代码
工作中,我们经常会去阅读别人写的代码。如果这些代码没有注释,结构混乱,那真的是一件非常头痛的事情。
现在,我们可以让 ChatGPT 来解释这些代码的作用,这样我们就节省了大量的时间。
4. 注释代码
我们可以扩展上面的第三点,手动对我们不熟悉的代码逐行地添加注释。但我们也可以要求 ChatGPT 帮我们添加注释,使得代码在发布前有正确的注释。
从此在 PR 中不再有没有添加注释的代码。
5. 编写测试用例
要求 ChatGPT 为一系列场景生成测试用例,甚至可以告诉它用哪个框架和版本。然后,ChatGPT 就帮你完成了相关测试用例,就像魔术一样。
6. 编写文档
可以要求 ChatGPT 编写一些文档,比如:
1. 如何启动一个特定的代码库
2. 运行时所需要的软件包
3. 代码的作用是什么
4. 已知的局限有哪些
5. 等等
生成的文档可能不完善,但适用二八法制,用在创造20%价值的80%的任务上。
7. 生成正则表达式
正则表达式不是我们经常使用的特定语法。每次都需要 Google 查询相关的语法,花费很多时间。
现在不一样了,我们可以直接要求 ChatGPT 生成它。
8. 使用正确的风格重写代码
要求 ChatGPT 按照我们团队的编码风格,重新生成现有代码。这在合并不同仓库/团队的代码时非常有用。
9. 查找代码中的 bug
当你知道你要什么,但代码却没有按照你的想法运行时,与其到处添加 console.log,不如让 ChatGPT 帮忙发现 bug。
ChatGPT 这个功能对函数级别的 bug 效果非常好,但不能针对仓库级别的 bug。不过,这已经是一个巨大的进步了。
10. LeetCode 算法
如果你需要找到一个特定的算法,并以最优的复杂度运行。ChatGPT 可以让你非常快速地开始这项工作。
这方面的一个明显的使用场景是算法面试,但有时候在工作中也很有作用。
我们来看 3 个例子。
1. 反转字符串
反转字符串是一个简单的算法题,通常面试者需要几分钟的时间来实现。
ChatGPT 在几秒钟内就可以提供一个正确的算法。
2. 获取二维数组中的矩阵
这是一道复杂的算法题,即使资深的程序员也需要花费一些时间。我们需要找到 0,然后找到矩阵,最后才解决 n 个矩阵。
在这里我们还需要分析算法的复杂度。
我曾经在 1 个小时的面试中使用过这道算法题,很少有候选人能完成。而 ChatGPT 在不到 30 秒的时间内就解决了。
3. 这道题通常会给候选人回家完成
这是金融领域典型的面试题,需求如下:
1. 获取过去 1 年内的所有交易
2. 过滤掉所有收款额在 1000 元以上的交易
候选人通常会先研究银行的 API 接口,然后他们会编写逻辑来提取交易,并过滤出需要的交易。
ChatGPT 只需要几秒钟就能完成同样的工作。
现在的问题是,如果人工智能可以通过这些代码面试题。那么它能在多大程度上影响软件工程师的日常呢?
我们将继续观望未来几个月的发展,但我已经感觉到它将对软件的构建方式产生巨大的影响。
这篇文章包含了软件工程师可以立即使用的 10 条提示。这 10 条提示可以帮助你的日常工作,并把你花在繁琐和耗时的任务上的时间还给你。
我们不应该害怕人工智能取代你的工作。相反,应该感到兴奋,因为可以利用它来提高生产力或创造更高质量的产出。
当然,ChatGPT 有明显的局限性。它的答案有时是不完整的或错误的。我们应该用批判性思维对待 ChatGPT 的结果。重点是,不要在没有审查的情况下就把 ChatGPT 的回答拿过去直接使用。
我个人采用二八规则。我把 ChatGPT 用在创造20%价值的80%的任务上。这通常是繁琐耗时的任务,无论如何都要完成。这样一来,我就可以更专注于创造大部分价值的高杠杆工作。
通过这篇文章,我们可以直观地感受到 ChatGPT 给编程带来的影响,也许在不久的将来所有程序员都会站在 ChatGPT 的肩上编程。