1. 研究概述
1.1 研究背景
OpenAI(由 Elon Musk 创立)在2020年5月发布的 GPT-3 引起了媒体和公众的广泛关注。在两年内,GPT-3 积累了一百万订阅用户。2022年12月,经过微调的 GPT-3.5 版本(称为 ChatGPT)在5天内吸引了100万用户,然后在2个月内吸引了1亿用户。
ChatGPT 作为一个自然语言处理模型,可以完成对话生成、问答、文本生成、文本分类、文本摘要和语音翻译等多种类型任务。ChatGPT 为用户提供了一个直观的界面来与人工智能进行对话,不仅能够回答令人印象深刻的问题,它也可以承认自己的错误,并能够拒绝不适当的请求。
具体到编写计算机程序方面,ChatGPT 的智能语言生成能力使它成为一种非常有用的代码生成工具,可以帮助用户在编写代码过程中节省时间和精力。扩展到整个软件研发领域,ChatGPT 还可以利用自己的知识,为项目经理、敏捷教练、需求人员、产品经理、设计人员、测试人员、运维人员等各种角色提供工作建议和指导,并可以在短时间内辅助完成一些具体工作任务。
1.2 研究目的
本次研究聚焦于获知 ChatGPT 在辅助编写代码方面的实用性水平及生产力情况。
1.3 研究方法
为在短时间内尽可能获得相对可信结论,本次以定性研究为主,并综合运用如下方法:
查阅权威资料文章:具体包括ChatGPT官方网站、权威机构或人士的观点等,确保资料的来源的权威性。
直接与 ChatGPT 对话:通过直接询问 ChatGPT 相关问题,获得最直接的信息。
利用 ChatGPT 实验:采用实验性的方法,直接利用 ChatGPT 和其衍生工具进行编写代码相关操作,获得第一手感受和资料,并与传统方法的效率和质量等方面进行对比。
1.4 总体思路
本次研究将基本按如下步骤递进地获得各问题的答案,从而逐步推导出结论:
了解 ChatGPT 在编写代码方面的能力了解 ChatGPT 的使用途径及各自特点了解 ChatGPT 在功能和使用等方面的局限性及克服方式列举代码主要编写场景及 ChatGPT 在各场景的应用能力评估 ChatGPT 在各代码编写场景下的质量、效率水平总体评估 ChatGPT 在编写代码方面的实用性和生产力拓展评估对 ChatGPT 在整个软件研发领域的实用性
2. 结论及阐释
通过研究分析,得出如下初步结论:
在工具可用的前提下,整体来看,ChatGPT 对于编写代码的生产力有很大的提升,尤其是针对常规性、辅助性的编码任务。
对于一些常规性编码任务,ChatGPT 可以在数秒内给出结果,相比普通人在几分钟内完成,有较大的效率优势。
ChatGPT 在编写核心代码之外的注释、文档、测试代码、测试数据等方面具有较高优势。
如果组织之前有这类工作任务,则非常有利于效率提升。
如果组织今后计划开展这类任务,则利用 ChatGPT 可节省人力。
对于没有这类任务的团队,ChatGPT 在这方面的帮助不大。
受模型局限、提问质量等因素影响,ChatGPT 并不能总是给出理想回答。所以,借助 ChatGPT 辅助完成编码任务,尤其是复杂编码任务,仍然需要利用批评性思维来判断结果的可靠性。
ChatGPT 在辅助高级开发人员完成低级任务方面具有很大的优势。这是因为,一方面这些工作量较多的模式化任务由人来完成的效率比ChatGPT会低很多。另一方面,有经验的高级人员可以给出高质量的问题和提示,并且可以更好更快地识别结果的质量。
ChatGPT 的“思考”是模式化的,难以替代人类去沟通,无法进行创造性、批判性思维,很难胜任一些有深度或场景特殊的高级编程任务。
ChatGPT 可以在很大程度上提升常规任务的质量和效率。
整个软件开发过程中,从需求到设计、开发、测试,以及维护各个阶段中,有很多常规性的、很成熟的实践,ChatGPT 可以很好地给出建议和具体内容。
对于相关人员(尤其是新手)来说,可以相对很快获得一份较高质量的工作输出。这对于提升整个行业的效能会产生很大作用。
ChatGPT 的一些局限性,会削弱其在实际项目中的作用。
因模型本身、提示质量等各种原因,ChatGPT 同样会写出有Bug、效率不高的代码。
ChatGPT 一次交互可接受的文本数量有限,一般用于代码片段,难用于大规模代码的分析。
ChatGPT(免费版)目前存在访问频率限制、报文长度、响应速度低、时不时崩溃等问题,影响实际使用。
对于国内用户,注册和使用受到OpenAI和国家政策限制,长期使用共享账号方式又不可持续。
很多公司对开发机连接互联网、外发代码有限制,同样会影响到 ChatGPT 的使用。
公司还可能限制将业务信息、代码等对外发送。
3. 分析过程
3.1 影响因素分析
影响 ChatGPT 生产力的因素主要有:
某项工作任务工作量在整个项目中所占比重ChatGPT 在某项工作任务上能提供的帮助程度人员使用 ChatGPT 的限制、意愿和成本人员使用 ChatGPT 的能力、熟练程度
3.2 ChatGPT 编写代码能力
仅从编写代码方面来说,ChatGPT 可在如下场景发挥作用:
知识传递
学习编程:可以通过问答方式从 ChatGPT 获得编程时所需要的技术或领域知识。技术选型:可以向 ChatGPT 咨询同类技术(算法、语言、框架、工具等)的异同之处及选型建议。
代码解释
解释代码:可以将代码发送给 ChatGPT,由其逐个部分解释代码的含义。查找问题:可以将需要 Debug 的代码发送给 ChatGPT,请其帮助分析逻辑漏洞。
代码生成
生成数据:可以使用ChatGPT生成开发或测试需要的假数据。生成代码:可以在和 ChatGPT 的同一会话中逐步提供信息,最终获得需要的完整代码,也可以基于上下文补齐代码或函数,也可以针对生产代码生成各种测试代码。重构代码:可以将代码发送给 ChatGPT,请其重写代码,以提升整洁性或效率。
文档生成
编写文档:可以请 ChatGPT 为给定的某段代码添加必要的注释,也可以为给定的代码生成需要的文档。操作UML:如果信息足够,ChatGPT 还支持为给定的代码生成 UML类图等,反过来也是支持的。
3.3 ChatGPT 使用途径