昨晚OpenAI发布了ChatGPT插件机制,这让ChatGPT成为一个超级入口和超级计算机,能够调用其他服务。尽管大众对ChatGPT的理解是见多识广、能说会道、善解人意还很会道歉,但如果大模型的能力仅限于这个水平,那它也只能帮忙写写东西,陪着聊聊天,做不了多少真正严肃的工作。程序员则认为,ChatGPT可以自动生成代码,但因为生成的代码仍需要人类review和修改,所以它只是帮助程序员提高效率的工具,不能替代程序员的工作。
然而,ChatGPT的影响远不止于此。它是软件开发的彻底革命,让所有人都可以使用自然语言作为编程语言,这将带来全新的程序员群体。这意味着未来不仅仅有专业的程序员,还有更多具备其他领域专业技能的人也能轻松使用ChatGPT来完成编程任务。这样一来,将会出现更多非传统程序员的创新思维和想法,对整个行业的发展也将产生深远的影响。
「GPT-4革命:对话即编程」
GPT-4出来后,我就一直在试能否用它来编程。我指的是直接用它编程和执行,而不是用它来生成代码。通过几天的实验,我发现只要教它规则或过程逻辑,它往往都能比较好的掌握。
比如,你可以教它算24点。
再比如,你还可以教它打牌。
虽然它的牌技还比较差,虽然它算24点还很慢也经常算不出来,但它是能按照你说的思路去做的。
无独有偶,我关注的南瓜博士也惊呼GPT-4太逆天,因为它之前基于GPT-3.5调教了非常久的“谁-在哪里-干什么”游戏,在GPT-4里非常轻松的就实现了。
可能很多人还没有看出来这意味着什么,觉得这只是教它玩几个游戏而已。但实际上,这件事意义重大,因为它意味着我们终于有一天可以直接使用自然语言来编程了。我们可以看到,在 GPT-4 算 24 点和打牌的提示词中,包含了循环、分支判断等编程结构。GPT-4 能够理解这些编程结构,这就意味着它不再是一个只能聊天的语言模型,而是具备了支持编程的能力。
编程语言已经发展了几十年,从 C 发展到今天的 Go、Python,但并没有出现革命性的变化。但 GPT-4 带来的这种通过自然语言对话来编程的方法是真正的革命。我认为,这种革命性至少有以下几个方面:
第一,编程可以通过自然语言进行,这意味着经过专业训练的程序员才能做的工作变成了理论上任何人都可以做的事。
第二,逻辑更符合人的行为习惯。比如,如果用代码来写 24 点程序,就需要遍历所有可能的组合再逐一检查。但是,人玩 24 点时并不是这样的,而是先看看加减这样的简单情况,再看看能否凑出 4*6 等组合。基于大模型编程,可以直接用这种方式进行编程。
第三,很多编程构造可以简化。因为大语言模型本身就具备很强的通用能力,所以很多时候不需要考虑用什么变量或数据结构来记录数据。例如,在打牌程序中,我们并没有用什么数据结构来保存手中的牌,大模型自动就会记牌。很多时候也不需要做精确的控制程序流程,例如在打牌程序中,我们只需要告诉大模型规则和策略,它就能学会如何操作。
第四,处处都可以借用大模型的能力写出“聪明”的代码。例如,在 24 点程序中,我们只需要告诉大模型“生成一个结果看起来是 24 的算式”,它就有一定的概率生成一个正确的算式(远比随机生成的概率高)。
第五,非常直观的在线调试和修改。只要让大模型输出思考过程,就可以很直观地看到哪里出了问题。发现问题之后还可以通过对话的方式即时修改。
当然,还有其他方面等待我们进一步挖掘。但以上几个方面足以让基于大模型的编程成为一种全新的物种,带来全新的程序员群体,也会影响到现有程序员群体中的很多人。
「人人都是程序员?」
这是否意味着人人都可以成为程序员呢?王建硕老师认为未来中国会新增五亿程序员,我觉得是很有可能的。虽然建硕老师把能告诉计算机“如果八点了,就告诉我该起床了”的人都叫做程序员的标准看似有点太低(而且这种表达方式也过于程序化,直接说“8点叫我起床”就行了),但基于上文说的5大特点,未来各行各业都可能把具备编程能力作为必备职业技能要求,就像现在要求会使用Office一样。
不过,我认为仍然会有大量以编程为主要工作的专业程序员。虽然编程不再必须使用Python、Java等专业语言编写代码,但编程人员仍必须具备指导计算机完成复杂任务的能力,例如通过设计对问题进行抽象、将任务分解为一系列步骤、使用循环和分支控制程序的流程等。编程的核心是编程思维,而不是语言,但这种思维不是每个人都能轻易掌握的。因此,即使可以基于大模型用自然语言编程,即使基于大模型的编程具有上文提到的几大优势,人与人之间的编程能力仍会存在很大差距。对于那些需要编程能力突出的专业程序员来处理的专业性强、复杂的软件来说,大量的编程工作仍需专业程序员来完成。