首先,ChatGPT可以帮我们开启想要编写的任何新内容的骨架结构,从而提升日常编码效率。GitHubCopilot在这方面也做得很好。这里我们以远程下载图片为例进行演示。
在VSCode中,可以基于ChatGPT插件面向ChatGPT编程实现这段演示代码,代码生成后点击Insert自动插入代码到右侧编辑区:
当然,你也可以从第三方云存储下载图片丰富代码实现细节:
除了具体代码外,你还可以让ChatGPT给出项目的通用目录结构(这也是代码框架的一部分)作为参考:
你可以拿出想要理解的任何代码,比如上面这段ChatGPT自动生成的图片下载代码,让ChatGPT对其进行解释:
可以看到这些解释非常详细,这比自己摸索试图理解复杂的代码要快得多,尤其是一些比较抽象的、封装度比较高的底层代码。比如红黑树的实现代码,我看不懂这段插入节点的代码,作者又没有写任何注释,可以让ChatGPT代劳:
通过描述你想要实现的目标,让ChatGPT对现有的代码进行改进。比如这里假设图片资源不存在,则退出不执行后面的文件保存操作:
它会为你提供如何实现目标的说明,包括修改后的代码,非常酷。
当重构由非本地Go开发人员编写的使用不同命名约定的代码时,这非常有用:
注意到ChatGPT不仅为你提供更新后的代码,还解释了更改的原因。
当审查(Review)和重构(Rewrite)由非本地Go开发人员编写的代码时,这非常有帮助。ChatGPT熟知Go语言代码风格,并将为你提供改进代码的建议,使其更易于阅读:
你可以对比运行下两段代码的运行结果,完全一致,但是ChatGPT提供的简化版本显然代码更加简洁。
这已经成为我最喜欢的ChatGPT功能之一:询问它是否可以帮助你测试一个函数,它将为你编写测试用例。还是以上面这个插入排序函数为例:
Go测试用例中一般是不包含main函数的,你可以让ChatGPT中去掉main函数:
有的时候,我们可能面对的是一段并不是性能最好的代码实现,比如基准测试后得出一段代码性能并不是很理想,需要寻求另一种更好的实现方式。这个时候,可以让ChatGPT给我们提供思路,当你想要探索不同的解决方案时,这非常有用。
这里ChatGPT给出了两种替代方案,都很靠谱。
每当你想要将某些代码从一种语言转换到另一种语言时,可以请求ChatGPT帮助翻译,这对它来说是小菜一碟:
非常棒!
这是我最喜欢的另一个技巧之一。询问ChatGPT编写代码的文档,它通常可以很好地完成。它甚至会将使用示例包括在文档中:
我们以前面的下载图片为例进行演示:
当然,ChatGPT也有不靠谱的时候,如果修复后的代码仍然存在问题,你也可以根据运行后的报错,进一步给ChatGPT进行提示,让它尝试给出更准确的答案,这部分之前主要是搜索引擎的使用场景,往后会随着ChatGPT的日益智能被逐步替代。
写正则表达式相信对很多开发者来说都是个很痛苦的事情,之前我们的做法通常是去搜索引擎搜索某个需求对应正则表达式的写法,然后去验证,虽然也有类似regex101这样的网站提供集常见模式、构建、测试于一体的友好服务,但与ChatGPT这种能直接理解人类自然语言,同时又能嫁接和计算机沟通的机器人相比,显然后者更加高效直接:
我觉得日后对于写正则表达式的需求,可以直接交给ChatGPT了,这比自己摸索测试要高效很多,又可以提前下班的一个小技巧。
以上的演示都是在一个语言内部,现在,我们尝试把我们的视野放得更广一些,从Go语言到其他语言、到命令行、到前端、到数据库、到全栈开发。
我们还可以就某个资源进一步提问,比如我想要了解《Rust编程之道》这本书的目录结构和整体介绍:
最后,我们还可以让ChatGPT给出Rust这门语言的学习路线图——如何从入门到精通:
非常棒。更多你感兴趣的问题,可以直接问ChatGPT,我这里就不详细展开了。
日常开发/运维过程中,经常需要和各种终端命令打交道,有了ChatGPT后,就再也不用为这种琐碎的事情耗费精力了,比如我想要找到Linux系统下某个目录所有jpg文件,并输出文件名到文本文件,可以这么做:
是不是非常高效直接?你可以问ChatGPT任何你需要的Bash命令的写法,堪称日常运维必备佳品,又一个可以提前下班的小技巧Get。
当然,你也可以轻松将其转化为WindowsDos命令行的命令:
日常开发中另一个需要经常打交道的就是Git命令了,不过如果你日常使用的都是图形化的Git客户端,可能使用频率会低一些,和Bash命令一样,我们可以询问ChatGPT任何Git命令的写法:
现在使用Vi编辑器的程序员很少了,但是在Linux系统上运维,有的时候还是难免需要用到几个Vi命令(Linux默认编辑器就是Vi),有了ChatGPT之后,这就很简单了,因为遇事不决问ChatGPT就好了:
除了Vi编辑器外,各种IDE的快捷键也不在话下:
ChatGPT在手,那些各种命令行、快捷键的Cheatsheet以及桌面、桌垫都可以扔进垃圾桶了。
除了让ChatGPT帮我们编写各种命令行命令外,还可以让它帮我们生成各种SQL语句,这是程序员日常提效的另一个重要领域。
如果想要指定字段,可以这么做(作为一个NLP模型,ChatGPT能够理解自然语言,没有任何格式约束):
可以为指定字段设置索引:
数据表创建好了之后,可以为其填充一些假数据用于测试:
如果想要通过代码插入,方便基于需求对数据进行调整,也可以让ChatGPT生成对应的代码,甚至指定使用的ORM框架,比如gorm:
非常棒,是不是?更新、删除这里就不一一演示了,你只需要通过自然语言提供你的需求,SQL的事情让ChatGPT帮你完成即可,提前下班小技巧+N。
有了后端和数据库之后,接下来向前端迈进,完成面向ChatGPT实现全栈开发的最后一环。让我们回到这篇教程的起点,从远程下载的图片最后需要在页面上展示,我们可以让ChatGPT帮我们实现对应的HTML&CSS代码:
详细代码就不贴出来了,比较长,大家自己去体验就好了,我们可以去HTMLPlaygroud去体验下效果,看起来很不赖:
当然,如果你对CSS框架有要求,可以让ChatGPT轻松帮你完成转化工作:
仅有HTML&CSS是没法和后端进行交互的,所以需要引入JavaScript,不过,面向ChatGPT编程也无需感知这些技术层面的术语,只需要通过自然语言给它提需求就好。
比如,假设这个卡片对应的是视频网站列表的某个视频,鼠标移上去就会自动播放视频,我们直接把自然语言需求提供给ChatGPT,它就会给我们生成对应的JavaScript实现代码:
不仅给出了整体实现的思路和代码,还考虑到浏览器兼容性及对应的处理方式,非常棒。
这里并没有调用后端接口,完全是前端浏览器行为,为了保护视频原始链接,这里我们将其改造为从后端API接口获取视频链接:
当然,和CSS一样,这里也可以使用流行的JavaScript框架来替换原生的实现代码,比如Vue或者React,这里我们以Vue为例进行演示:
完整代码这里就不贴出来了,感兴趣的同学可以自己去尝试。甚至你还可以通过TypeScript实现这段代码,只需要在需求中附加这个约束就好了。
好了,至此,我想,我已经从前端、后端、数据库、Devops等维度覆盖了面向ChatGPT编程实现全栈开发的方方面面,你已经具备成为Prompt工程师(面向ChatGPT编程就是Prompt驱动)的理论基础,勤加练习,就可以成为一名合格的Prompt工程师,接下来,就到了找工作的环节,在这个环节,我们仍然可以借助ChatGPT帮我们做好面试准备工作。
提供你的履历、技能、项目经验,让ChatGPT自动帮你生成简历:
还不错,给我提供了基本的模板,然后我们稍加填充和润色就可以用了。
简历一旦通过筛选,就可以进入面试环节了,我们可以根据对应公司和岗位的要求(网上可以搜索到信息,或者咨询ChatGPT也可以),让ChatGPT给我们做模拟面试。
首先我们可以让ChatGPT帮我们生成面试问题:
如果哪一题不会,可以立即问ChatGPT:
非常方便,有没有?你不妨可以试试看,通过ChatGPT准备一次面试,然后看看效果。
在面向ChatGPT编程的过程中,需要记住以下两点,这也是使用ChatGPT编程的两个大前提:
使用ChatGPT不是说让它替我完成所有工作,使用ChatGPT是为了让我的产出和效率提升10倍。
ChatGPT只是一个工具,而不是主导者,工具是给人使用的,能否最大化工具价值也在于使用它的人。主导者永远在人,在我。
何况,ChatGPT也是有缺陷的。我发现它在处理代码时会出错,它不是总是对的,但这就是为什么我会在这里:监督它。我们一起形成了一个更完美的联盟。另外,那些诋毁这个工具的开发者正在忽略它的价值。