熊节:我试着“调戏”了下ChatGPT,挺有意思的

来源:作者赐稿

2023-02-01 08:36

熊节

熊节作者

四川质量发展研究院高级研究员

【文/ 熊节】

这几天大家都在“调戏”ChatGPT,我也跟着凑了个热闹。

稍微科普下:ChatGPT是美国公司OpenAI做的一个能跟人对话的人工智能,因为各种技术的突破,这玩意能跟人聊得像模像样,很有真人的感觉,比如像这样:

我个人觉得,这东西最有意思的就是,它还会胡说八道,甚至你都说不上来它胡说八道的东西到底从哪儿来的,这就感觉特别有人味儿了……

然后就有一群敏捷教练开始试着让ChatGPT回答敏捷的那些月经问题,什么如何做迭代回顾啦,什么如何评估敏捷教练的绩效啦。我就不在这重复了,感兴趣的读者可以自己去实验一下,真就跟敏捷教练们日常说的片儿汤话一模一样。

当然这也是个很有意思的现象。第一,人工智能会说片儿汤话,也是一种本事。第二,有那么一帮人对这些片儿汤话这么来劲,其实这也很说明一些问题。毕竟很多人的饭碗不就是靠片儿汤话撑着的么?

前几天,有个老朋友说可以用这玩意来辅助课堂上回答学员提问。我说这个固然好,但是更好的方式难道不是不知道的问题就直接说不知道吗,你啥时候也变得这么刻意了。我这朋友说,害,不是刻意,是太多问题都说不知道,那就收不上钱了呀……

片儿汤话我玩了几下就玩得没意思了。鉴于这个AI做出来的目的是协助软件开发,我就拉上它搞了三天结对编程。这三天实验下来,可以说,这个AI已经超过了我合作过的一大半pair。这家伙,是真有用。比如说吧,我正在做的易经打卦App,我有这么一个用户故事:

作为求卦者,我想在卜得卦象之后查看卦象详细解释,以便我理解卦象的含义。拿着这个故事我真是哪儿哪儿都不会做。没关系,问AI:

可是我不止一个文件要读呀,64卦就是64个文件呀。接着问:

行,照办。然后就发现,这行代码——await rootBundle.loadString("asset/text/01.md");

返回的是一个Future对象。这玩儿在单元测试里咋验证啊?没学过呀。接着问:

行,照抄,分分钟测试有了。怎么在卦象页显示从文件读出来的内容呢?我连这种控件在Flutter里面应该叫什么都不知道。

这下知道了,原来这东西叫Dialog。那除了AlertDialog还有没有别的形式的Dialog?

挺好挺好,我就需要个简单的Dialog。但是卦象描述是Markdown格式,SimpleDialog怎么渲染Markdown呢?

这就做完了……整个Story大概花了不到1个小时吧(得有一半时间是在等ChatGPT一个字一个字往外吐字),真·全程无脑抄……

做完回头一看,好家伙,这不就是一个先做tasking(任务拆解),然后一个个task完成的过程吗?以前我们说tasking是软件开发中的一个重要环节,现在可好,跟AI结对,tasking快变成软件开发中唯一重要的环节了。

只要把任务拆解成10~15分钟完成的颗粒度,ChatGPT就能给你明确的答案,根本不需要你自己再去记什么框架怎么用什么算法怎么写。

布鲁克斯在《没有银弹》中所说,软件开发的本质性工作(essential task)是创造出一种由抽象的软件实体所组成的复杂概念结构,而附属性工作(accidental task)则是用编程语言来表现这些抽象的实体。本质性工作(说白了,“搞清楚到底要做什么”)是无法消除的,软件技术的发展一直都在试图降低乃至消除附属性工作。跟ChatGPT结对编程这几天,我感觉这个技术在消除附属性工作的方向上取得了很大的进步。

那么,这对于程序员到底意味着什么?《与机器赛跑》中说,“深蓝”打败卡斯帕罗夫以后,国际象棋比赛不但没有消亡,还相当活跃。现在大家都是人脑和电脑组队,配合着打比赛。而最强的队伍,既不是最强的电脑,也不是最强的棋手,而是相当不错的电脑加上相当不错并且善于和电脑配合的棋手的组合。

我觉得今天我们看待ChatGPT这样的AI也是一样的视角:你不要试图在机器擅长的事情上去跟机器竞争(race against machine),而是要找到跟机器配合的方式,和机器一起去竞争(race with machine)。有个靠谱的AI一起结对编程,对程序员肯定是件好事。

软件开发这件事,不管使用的工具如何变,其核心其实都是同一件事,即希尔伯特第十问题的推论:这世上存在的问题,比图灵机可计算的问题,要多出无穷多——几乎随便找一个世上存在的问题,都一定是图灵机不可计算的。

软件开发者的任务就是对着一个有人想要、但是图灵机不可计算的问题(即“需求”),将它建模为一个近似的、图灵机可计算的问题(即“解决方案”)。易知这个建模过程本身等价于停机问题,因此是图灵机不可计算的——说人话就是,再强大的工具,只要计算机架构没有发生本质的革命,在软件开发的核心问题上就取代不了程序员。

当然,我经常讲,机器取代人有两种方式,一种是机器有一天能完成现在只有人才能完成的核心任务——这个,我们已经说了,在软件开发这块,暂时还看不到希望;另一种就是,有很多人原本也没有在完成那些核心任务。咱们这个行业里那些应聘全靠刷LeetCode、开发非得需求文档一个字一个字写得明明白白、半点脑子都不愿动的程序员(姑且也用这个名词称呼他们),可不就是等着被ChatGPT这样的人工智能取代么。

责任编辑:刘惠
观察者APP,更好阅读体验

中法欧领导人三方会晤结束

习近平将同马克龙和冯德莱恩举行三方会晤

“五一”近3亿人次出游,较2019年同期增长28.2%

“美国首次暂停,以色列深感担忧”

习近平抵达巴黎开始对法国进行国事访问