作者按:最近要忙了,日更的日子要到头了。后边每一篇讲的点就小一点吧,大的点等后边有空了再写。大家见谅。

碰到了认知距离

我的有的朋友跟我说,用ChatGPT编程需要你至少要跟他对等水平,因为现阶段咱们还不能做到完全不需要关心它写出来的代码,当你要读懂它写的代码的时分,就必须才能对等。还有的朋友跟我说,ChatGPT的不能超过你的认知水平,你的认知水平的上限决议了它的体现,比方你认知水平不可,导致自己不能分解使命的时分,那么你用ChatGPT也写不出代码。

上面说的都没错,可是假如是以往的东西,它或许到这儿就会呈现一种分层。这种分层就会导致人和人的距离的距离在企业里或许就会变成一种区分职级的距离。可是ChatGPT跟以往的东西都不同,以往的东西他没有办法提高你的认知,没有办法提高你的水平。可是ChatGPT能够扮演多种人物,除了当一个生产东西之外,它还能够当一个教育东西。也便是说,当你进入到了一种低认知的状况,他能够马上转变为教育东西,让你经过学习进入高认知状况,提高你的水平。然后你就又能够一种较高认知的水准进行工作了。

举个比方,在咱们的这个程序里:

ChatGPT编程秀-8: 用ChatGPT跨越认知边界

开发最后的png_info_post_inject模块时,我其实并不会操作png的内嵌信息,以前也没有过相似的经验。所以一开端,我仅仅想当然的以为nodejs应该能够吧。所以我问了他许多的问题,做了许多的设计,乃至改了许多遍。便是想让他用Node.js给我做出来。经过一系列的测验之后,公然就失利了。(主要是我用的AI自己会在图片里留一些信息,我又不想掩盖掉,我还想它的信息和我的信息在作图AI的软件里都能被看到。)我又让他给了我其他的库或原生的写法,都不太好用。由于我太有自信了,所以这个过程中我全程TDD,为了建立这个测验环境还浪费了我许多时间。

然后在这个时分我就进入了一种迷茫的状况。我不知道该怎么办了。

跨越认知距离

幸亏我现在的东西是个人工智能。所以我问他:

ChatGPT编程秀-8: 用ChatGPT跨越认知边界

嗯……Python,我的画图AI也是用的python,这个应该可行。可是这回我学聪明了。我并不直接开端TDD。我先建了个spike文件夹。也便是调研用的。这儿的代码呢仅仅做一个测验。并不真实作为产品代码运用。

其实这个动作在TDD里面也是被讲究的,你应该先调研,调研完了之后再来tdd。你不应该带着对某一个知识点的不理解工作,而且在你的代码里边试验边学习一个知识点。这种做法十分常见,可是其实是反模式。因为你的代码里往往都有各种各样的其他无关因素,造成了你的学习效率不高。学习一个知识点和将这个知识点用于工作,应该是两个阶段。

所以接下来我是这么做的。我新建了一个spike文件夹。然后开端在里面试验我的代码这个spike文件夹我有或许最终是不会提交到代码库的。

然后我在里面预备了一张test.png

然后调研用python来访问png,可是我究竟不太了解这个范畴,我决议开端之前double check以下,我又问了一遍

ChatGPT编程秀-8: 用ChatGPT跨越认知边界

hmm……公然有点小坑,也不知道哪个是哪个,看起来PIL更基础一点,行吧,我的功能不杂乱,或许PIL就够用了。

于是我问:

ChatGPT编程秀-8: 用ChatGPT跨越认知边界

似乎又说PIL便是Pillow,不知道靠不靠谱啊。咱们都知道,ChatGPT常常会编造。这也是许多人不信任他的当地。其他范畴咱们不好说,可是编程范畴其实不太有必要不信任他。一个是你看咱们能够像这样去做一个double check。另一个便是咱们能够让他从他讲的计划直接生成代码。假如他的计划不可行,你代码自然没法执行。乃至你把代码说到ide里,它或许都会有语法错误,对吧?咱们有一套完整的IDE、编译器和咱们的电脑组成的开发环境来验证它输出的内容是不是可信的。这也是我为什么这么放心大胆用于编程的原因。

那么已然咱们得到了代码,我就能够开端试验了,我直接把example.png 改成了test.png,公然打印了出来,这可行!

然后就又问了他怎么修正,怎么append,这儿就不展现了,其实假如自己走一遍就会发现,这个里面修正或许是完全掩盖或许是append,我前面说,我想保留原有信息,所以我需要的是append,这个就不是那么直接可用了,跟它折腾了一会。

所以spike这一步的其中一个意义就在这儿:我能够在一个十分单纯的环境下随意地测验计划是否可行,而不用带上其他杂乱的上下文,究竟我做到这儿的时分,程序也挺长的了,输入的intention.yml也挺杂乱的了,每次都从头测验也很低效。

接着我又让他给我生成了nodejs怎么调用python,在今日之前,我也历来没用过这个才能。这个才能spike的很快,spike完我就直接封装了一个runPythonScript函数出来。

接着到了真实的集成点。咱们需要把Python代码封装成一个node js函数,然后对咱们的程序供给服务。这个时分再给大家演示一下,上一篇咱们说到的编程言语也是一种言语的场景:

ChatGPT编程秀-8: 用ChatGPT跨越认知边界

所以能够看到,咱们能够直接把代码给他,不用说太多废话。他自己能看懂,然后让他来抹平集成时或许呈现的问题。比方传参问题还有返回值问题。我之前并不知道要怎么传参和得到返回值,现在我知道了。

所以前面调研环节的另一个价值就体现出来了:你调研得到的代码能够直接作为prompt运用,并不需要还转化为什么自然言语,言语便是言语,都能作为prompt的一部分,而且啊,搞不好chatgpt还更喜欢编程言语,究竟人类的自然言语太不谨慎了。

总结一下

在本文中,咱们探讨了运用ChatGPT进行编程时或许会遇到的认知距离,并剖析了ChatGPT与传统东西的不同之处。与传统东西相比,ChatGPT能够扮演多种人物,除了当一个生产东西之外,它还能够当一个学习东西。这意味着,当你遇到认知距离时,ChatGPT能够立即转变为教育人物,协助你经过学习进入高认知状况。

经过一个实践的比方咱们看到了,当咱们在编程中遇到自己不会的工作的时分,因为咱们自己也分解不出使命,ChatGPT也不能帮咱们解决问题,ChatGPT的体现也会下降。这时,咱们能够进行调研,也便是进入学习状况。这个时分咱们就能够把ChatGPT当成学习东西运用,提高自己的认知,从而提高ChatGPT的体现。

其实编程工作一直是有两个状况的,一个是学习态,一个是工作态。而且常常是要随时切换的,所以咱们要时间提示自己,意识到自己是处于学习态仍是工作态。两种状况的工作流程我总结了一下,如下图所示:

ChatGPT编程秀-8: 用ChatGPT跨越认知边界

最后再说一点,结合咱们上一篇说到的编程言语也是言语的思路,调研过程中得到的代码其实并不是什么浪费,他能够作为prompt的一部分来加速咱们后边工作态时的效率。在以前,其实这样做也是能够提效的,可是因为整个过程是在人脑中,并不是很明显,今日咱们经过ChatGPT来编程,咱们就会发现,这种方法确实是更科学而高效的。