目录
01背景
尤记得每个月「本月全球最流行编程语言」发布的时候,都会在程序员届掀起腥风血雨。“Java 下降了一名,怎么可能”、“ 又占据榜首,门槛太低,写个脚本就算用了吗?”、“C# 这种单平台语言也就是闭环生态内的产物了” 这类言论层出不穷,大家也都乐此不疲,已然是以前的流量密码。
然而这一切现在似乎已经悄悄变化了。大家开玩笑说现在使用的最多的编程语言,已经是英语(自然语言)了。
现在 GPT 已经开启了人工智能狂潮。在社交圈里不聊上两句 ,感觉不只是要和时代脱节,更是已经被开除 IT 籍了 ~
笔者在 2022 年 12 月初开始体验 。一开始我向它提一些有趣的问题,例如“告诉我 TCS 相关的知识”等等。相信绝大多数人一开始使用的时候都是如此,那时候互联网上认为它的功效应该是代替知乎,让 作为问答知识类的平台。知乎已死的声音甚嚣尘上。
后来大家又发现,它的很多回答都是胡编乱造的。例如你问它一些新上映的电影,它即使不知道也会胡编乱造一通。大家又开始贬低它,觉得只不过就是一个普通的聊天机器人,还是尬聊型选手。
去年相关的论文的分享介绍比较少,市面上的评价分析的角度还停留在认为 只能针对已有知识进行总结,或者是平移。
但是随着使用的人数越来越多,大家才知道, 与语言无关,你用任何语言去提问,它都可以很好的理解你的意思。因为它使用的是语言模型,而不是具体的某个语言库。如果还用搜索引擎的“关键词匹配”、“关键词命中”思路去思考人工智能,就已经显得有些落后了。本篇在详细介绍几个GPT帮助程序员工作(干货满满)的应用场景之后,将为你分享AI的正确打开方式—— 。
02AI 可以帮助程序员做什么? 2.1 技术知识总结
刚开始接触学习一门技术的时候,难免需要去查看文档。现在的手册非常丰富。往往对于一个初学者来说,需要接触的信息太多、排版五花八门,学起来云里雾里。
这时候就可以借助 的总结能力,例如我想学习一下 K8S 的相关知识,我发给它一个文档的地址,让它帮我总结。
:
总结这篇文档。
可以看到,它很好地总结了这篇中文的文档,并且对每一个关键点进行了概括。用最少的语言让你能够搞懂你想要的知识点。
因为 是有上下文的,它知道你需要的内容是中文的总结,所以在这里你继续发一篇英文的文档给它,它也会用中文帮你总结。
:
总结这篇文档。
目前 的免费版本数据库的截止时间是 2021 年,也就是说如果问它比较新的内容,它是无法总结的,甚至是会随意编撰。例如这里询问一个关于电影《流浪地球 2》的问题,让它总结一下 里的介绍。
:总结:
%E6%B5%81%E6%B5%AA%E5%9C%B0%E7%90%832
因为这时候电影还没有上映,所以之前的内容还都是错误的,它的总结是不准确的。
当我们将整个网站的内容复制进来,让 进行总结。但是这时候会发现,文章太长了,会收到报错。
这时候,就要运用自己的想象力,使用 来进行突破了。我们需要把文章进行段落拆分,每一段都符合它的标准。
将内容拆分成 7 段,发送完成之后,它就会自动总结了。
这样,才能得到了一篇文档的正确总结。
2.2 拆解任务
上文所描述的内容,可以算是借助 AI 让程序猿日常生活效率提升。那么在工作当中,AI 如何帮助我们提效?
我们从需求端获取一个需求以后,很多情况下我们的任务并不能够非常准确的估计时,原因就是我们并没有将任务拆分清楚,所以并不能够对每一项任务进行估计,导致风险的发生。
这时候可以简要描述一下我们这次的需求点,让 帮我们进行任务拆解。
可以看到任务整体被拆成了一个个细小的任务。它可以很快的让我们将任务转换为 task,或者是需求跟踪单。这既方便和产品经理进行沟通,也便于我们自身排期。转换成 模式也便于了解当前进度。
如果对方仍有疑问,可以继续询问拆解。比如我们想要询问第三步应该如何进一步实现。可以看到它甚至给了我们具体的 UI 交互。我们可以利用这样的提示对我们的交互以及实现提供一定的参考。
2.3 阅读代码/优化代码
开发者经常接手别人的代码。质量参差不齐,还会夹在很多奇怪的命名。当我们阅读整体逻辑或者修改逻辑,可能会因为自身阅读的问题造成理解偏差,进一步引发 bug。
如果将这个方法交给 AI 去阅读呢?可以看看效果。
:
逐行解释下面的代码 + 代码内容,(在这里使用了一段在 上面的开源代码进行展示, 这段代码是一段定时器相关的内容)。
可以看到 正确的理解了我们的代码,对代码进行了解释和说明。
但是这时候只是生成了一个整体的说明,并没有对每一行分别进行解释。这时候继续和它对话:
:
可以在每一行代码上面加上注释,便于我理解吗?
这时候它会逐行的进行代码标注,便于你对每一行进行理解。如果你接着对它提出一个粗浅的优化需求,它也会照做。
:
这段代码可以进行重构和优化吗?逻辑有些繁琐。
你可以对某一个部分提出更细节的要求,为它提出更好的优化方向。在这里我们提出了关于参数顺序耦合的问题,可以看到 GPT 也理解到了我们的需求,并且做出了对应的优化,如下:
:
: (: , : , : () => void) =>React. // 子组件,接收三个参数,返回一个React节点
这里面的参数太多了,而且对顺序有强依赖,该怎么优化这里?
2.4 代码生成
开发者在工作中还有一种场景的工作量比较大,需要复杂的逻辑思考。但是实际上最终的代码可能只需要几行就可以搞定。你在思考过程中觉得很痛苦,想和身边的同事去沟通。也许你给他解释完这个逻辑以后,他非但不能帮你思考,反而将一人份痛苦变成两人份。
例如,我们要进行数据转换,是否也可以交给AI来做?我们发送给 GPT 这样的 ,将数据结构进行转换。数据源为:
“”:null,
“”:null,
“”:”role—用户角色”,
“label”:”角色”,
“name”:”role”,
“”:true,
“”:null,
“type”:””
},
“”:null,
“”:null,
“”:” of the to —需要创建的主题”,
“items”: {
“”: [
“”:null,
“”:null,
“”:”topic name—主题名称”,
“label”:”主题名称”,
“name”:”name”,
“”:null,
“type”:””
},
“”:null,
“”:null,
“”:1,
“”:” —分区数”,
“label”:”分区数”,
“name”:””,
“”:null,
“type”:””,
“”:”>0″
],
“type”:””
},
“label”:”主题列表”,
“name”:””,
“”:true,
“”:null,
“type”:”List”
我想要得到的数据是 type 为 List 的数据,并且数据结构为:
{type:List, name:””, :[{
name:”name”,type:””
},{name:””,type:””}] }
GPT 会为我们得到正确的结果:
我们只需要输入目标数据结构,转换后的数据结构,无需指定语言。因为它会从你的上下文里理解到你是想要问什么实现方式。
还有执行脚本,我们只需要描述清楚我们的需求,它也会帮助我们进行完善。
此外,它还可以进行进行解释说明:
上面可以看到,我们在这里使用了一次“自然语言编程”的操作流程。不论你是否会使用 、bash 你都可以正常的描述你的需求。进行生成。
我们还可以进行代码转换,例如你写了一段 js 代码,你希望将这段代码转化为,以前我们会通过 搜索看看有没有对应的转换器,现在就只需要交给 gpt 来执行。提出你的诉求,它会在 10s 内为你生成一段没有 bug,包含异常处理的代码。这里我们不展开举例。
2.5 生成单测
我们刚刚那段数据转化的代码,如果我们想要进行测试。以前我们可能会苦思冥想很多场景进行补充。现在只需要告诉 AI 帮我生成单测即可。
:
(代码内容)为这段代码生成 unit test。
如果你觉得测试条件不够,那就再问它,让它再生成。
: 数据源不够丰富,多测试集中边界条件,比如数据不存在,数据类型无法转换,数据类型不对等。
它还会给你解释这里都做了什么操作,这些测试用例覆盖了不同的场景,包括:
当数据源中没有类型为 List 的字段时,应该返回空数组;当数据源中有类型为 List 的字段时,应该返回正确的字段数组,包括需要的验证。
323AI导航网发布