我很震惊ChatGPT对程序员的挑战

我使用ChatGPT协助编写程序,大概已有一个月左右,已经非常佩服ChatGPT的优异表现,这其间,对于我自己的图形、图像处理专业领域,使用python编程,实现了基于深度学习的花卉识别程序;对于不熟悉的前端编程(html+javascript),通过对网页的模拟操作,实现了类似抢票的小工具;对于完全没有接触的Scratch编程,也很快掌握了编程方法,并编写了可用于教学的大量示例程序。在ChatGPT的协助下,这些任务都得到了快速完成,整体体验是:使用ChatGPT至少提高了5倍工作效率,对学习与掌握新知识尤其有帮助。

不过,这些编写经历,也仅仅让我佩服ChatGPT的优秀和强大而已。但最近这一次的编写经历,彻底让我震惊了,也对它又有一个全新的认识,ChatGPT不仅仅是帮助程序员提高工作效率这么简单,而是将彻底改变程序员这个岗位的职能,甚至对公司用人的思路都将产生根本性影响。

事情源于需要完成这样一项工作:就是采集道路旁一些特殊的标识和设施的GPS位置信息,如限速标识牌、防火消防栓等。评估这项需求后,认为最合适的方案是编写手机App。考虑到手机的Android与iOS两种操作系统平台,ChatGPT建议使用flutter编程,有利于在两种平台间移植程序。我之前用Jave编写过少量Android手机的App,感觉使用Java编写手机App的复杂程度远远高于编写PC平台的程序,其框架结构与配置特别复杂,一不小心就会出错,并且学习成本非常高。看了ChatGPT的建议,一时半会儿,还有点犹豫,是否要尝试编写这个手机App?是否要使用全新的技术来编写手机App?因为我之前从来没有使用过flutter和dart语言,这是第一次听到他们的名称。但是考虑到一个多月来在ChatGPT协助下的编程实践,对ChatGPT越来越有信心,就决定试一试。

这一尝试,彻底让我震惊了。完全没有想到,通过ChatGPT的帮助,使用flutter和dart开发这个Android手机App,仅用了1天时间,就完成了从建立开发环境、到编程、到调试,到正确运行的整个过程,而且在建立开发环境过程中走了弯路,大概花了半天时间,实际编程、调试程序反而非常顺利。而令我震惊的是:直到这个手机App能够正确运行、完成设计功能为止,我竟然仍然一点也不知道flutter架构和相关知识,完全不知道使用flutter开发手机App的程序架构,对dart语言更是一条语法规则都不知道。就像使用导航软件,完全不需要知道路况,跟着导航软件的指示驾驶即可。

这真是一次奇妙的经历,一次令人震惊的经历,也是一次对未来程序员带来一点点忧伤的经历,也是一次带来一点点惊喜的经历。

具体与ChatGPT的互动过程就不一一阐述了。源代码大概写了1400行,也不列出了,就贴一张程序运行截图吧,如图1所示。

alt text 图1 特殊位置在Google地图上标识截图

下面谈谈对于这次编程经历的一些感想和程序员面临的挑战吧。

(1)程序员Debug的能力将严重退化

在这次的程序编写过程中,无论是语法错误,还是运行错误,程序员根本不需要了解是什么错误,不需要寻找出错的原因,也不用思考如何解决问题,更不用查找资料,甚至错误描述都可以不读,直接把错误提示信息复制给ChatGPT,大多数情况下,ChatGPT一次回答就能解决问题。大家想想,在这样的编程环境中,程序员还需要积累Debug经验吗?完全没有必要了,如果长期处于这种状态,Debug能力能不会退化吗?

(2)新老程序员的竞争形式将发生改变

在ChatGPT的协助下,显然可以提高工作效率,让程序员更多地关注问题本身,而不是陷入解决bug的泥潭中。有编程经历的人都知道,程序员实际上大量的时间和精力都是花在测试和Debug上,现在有ChatGPT的帮助,这个过程将大大缩短。这也使程序员会面临新的问题。有ChatGPT协助,具有丰富编程经验的程序员,可能不再具有优势,就像有了导航软件后,出租车的老司机不再具有熟悉城市路况的优势一样。新老程序员的对决直接提升到一个更高的层次:就是对问题的理解能力,解决问题的思路和方法,这些能力成为新老程序员竞争的主要矛盾。这也会给公司如何招聘程序员带来新的思路,是否有编程经验,可能不再是一个非常重要的考查指标了。

(3)程序员的编程生命期将延长

在软件行业,一个普遍现象是越老的程序员面临被淘汰的压力越大。导致这种局面的原因主要是两个方面:一是新的编程语言、新的编程框架、新的编程技术,不断涌现,老程序员往往来不及或没有精力学习新的知识,面对年轻程序员掌握的新技术,会越来越感到力不从心。二是随着年龄的增加,记忆力下降,编程中使用的类、方法、成员变量等往往记不住,不得不查资料,这会导致工作效率下降。有ChatGPT的协助,老程序员面临的这些不可避免的问题就迎刃而解了,反而是长期编程培养的严密逻辑思维能力,越来越可能碾压年轻程序员了。从这一方面来看,也将影响公司招聘程序员的思路。

AI带给我们的这种情形,对程序员来说,真不知道是好事,还是坏事。大家普遍认为AI的发展必将替代一些简单、重复的工作,这些岗位首先会消失,但AI,如ChatGPT,对具有高智商的程序员带来的影响,可能很多人还没有真正意识到和体会到。在面临时代巨变时,只有拥抱ChatGPT,率先掌握和使用好AI工具的人,才不会被时代淘汰。

下面对如何使用好ChatGPT提出一些建议吧。

为什么ChatGPT提供的代码,仍然有错,需要多次交互debug呢?这里的主要原因,除软件需求理解偏差外,仍然存在一些技术问题需要解决。ChatGPT不知道程序员电脑的软件安装环境,它只能按常规方式提供代码,就有可能出现不同软件版本冲突的问题。另外,ChatGPT也会出错,会使用一些不存在的类、属性变量等。但只要不断与它交互,最后一般都能解决问题。但也有一种情况例外,如果与ChatGPT交流的方式不对,可能会导致它越改越错,有时还会陷入一种循环修改错误的僵局中。如果出现这种情况,可以告诉ChatGPT,从新开始,再把软件需求描述一遍,并且缩减一些功能,让需求更简单一点。

这就引出另一个技巧,如果要ChatGPT协助解决编程问题,一定要描述准确、表达严谨、叙述详细,不能采用日常对话聊天的语言,要把优秀程序员编程的经验转化为对问题的精准描述上,甚至要像画程序流程框图一样详细地告诉ChatGPT,这一步非常重要,不要以为详细描述是浪费时间,越是描述清楚,越能让ChatGPT一次性解决问题,从而避免它陷入僵局中。

另外一点建议是:把问题分解,先让ChatGPT完成一、二项基本功能,再逐步增加新功能。这样相当于从一个编程单元开始,完成一个编程单元,就测试这个单元,测试正确了,再增加下一个编程单元任务,这样逐步叠加,反而能提高工作效率。如果一开始就描述一个复杂而完整的系统需求,让ChatGPT来编程实现,会带来以下一些问题:由于太复杂而难以准确描述,一旦出现一些逻辑错误,就很难再给ChatGPT解释清楚,反而会影响它完成任务,工作效率自然就降低了。另外,一次描述太多任务,不知是有意,还是能力所限,ChatGPT也会遗忘一些功能,提供代码时,就会缺失这些功能对应的代码。

最后说一点,前端编程、GUI编程,这些工作除要求编程能力外,还要求带有一些创意设计、审美能力,在这方面,目前的ChatGPT能力还非常弱,这类程序员面临的挑战压力相对要小一些,但留下的时间也不多了,ChatGPT进化非常快。从目前AI的智能水平来看,它们还难以达到一个优秀软件架构师的能力。对于具有复杂逻辑的大型软件,如何规划软件架构、分解软件模块、提出创新性算法,这些仍然是ChatGPT的弱点,也是程序员未来的方向和发展之路,只有在这方面培养和提高自己的能力,才不会惧怕ChatGPT的挑战,反而会觉得它是一个强大的帮手,是一个有益的工具。

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值