ChatGPT大火,我现在有种感觉:我们可能站到了自然语言编程的门口,一脚下去,也许能把门踹开。
当然,也可能会踢到一块铁板。
回顾我们的编程之路,基本上就是一个编程门槛不断降低的历史。
最早的一批前辈们通过手工插拔电路的方式把程序输入计算机,每次编程都得好几个小时,甚至好几天。
冯诺依曼架构出现后,程序可以存储在内存中,随意变化,一下子方便了很多,但是编程依然是非常低级的汇编,上古的大神们用汇编写Unix等操作系统、编译器,这时候程序员是珍稀动物,编程门槛太高了。
Fortran/COBOL/BASIC/C/C++/Pascal等高级语言的出现让编程难度降了一个等级,再加上80年代PC行业的爆发,编程行业开始繁荣。
到了90年代,Java、Python、Ruby、JavaScript等编程语言,让程序员更加远离硬件,远离内存管理,可以把目标聚焦到业务逻辑上。
进入21世纪,企业为了应对快速的市场变化,对信息化的需求越来越高,迫切需要快速地实现业务,推向市场,于是low code ,no code 又形成一个巨大的浪潮,在界面上,通过拖拽的方式就可以编程了。
再往下走一步,大家都非常明白,那就是自然语言编程。
在之前自然语言编程大家都觉得是挺不可思议的事情,因为这需要AI理解自然语言,并且能准确地输出代码,这是一件非常难的事情。
但是ChatGPT、通义千问等大模型出现以后,我们突然发现,自然语言编程出现了重大突破,我们可以告诉AI需求,让AI来生成代码了!
我们可以告诉AI:
我需要实现一个Product的RESTful的接口,用SpringBoot来实现,Product的属性包括id,name,description, imageUrl。
在几秒内,AI就可以迅速生成从最上层到最底层的代码,更让人震撼的是,它还支持微调的能力。
我们可以说:“数据库访问用MyBatis实现。”AI可以迅速把数据库访问代码改成MyBatis。
当我们说:“把imageUrl改为image_url”,AI 马上可以找到所有相关代码,把imageURL改过来。
这种微调的能力,远远超过了之前常见的代码生成器,AI似乎准确地理解了你的要求,对代码做了精确的修改。
当然,对于某些极端的情况,AI会有些考虑不周,还依赖程序员的洞察力。所以我经常说AI能生成95%的可运行代码,剩下的5%需要则依赖程序员的功力。
这还只是生成代码,程序员还需要把代码从聊天窗口复制到IDE中去运行调试。说实话,这个过程也挺烦人的。
钉钉刚刚发布的AI生成应用场景突然又让我看到了新的方式,在通义千问这个大模型的支持下,它不仅仅是用自然语言生成代码,而是直接生成应用,一键部署,然后直接在钉钉群聊里运行起来!
它甚至通过拍照的方式就可以生成一个应用,让输入的方式不再只有文字:
GPT-4在之前的演示中,也展示了根据图片生成代码和网页的能力(这个能力现在没有正式发布,让大家使用),但是钉钉已经可以直接生成可以运行的低代码应用,比如常见的工单管理系统、门店巡检系统、客户信息管理系统都可以交给AI去帮我们开发出来,这实在是太棒了。
如果自动生成的应用程序不满足要求,也可以通过继续对话让AI帮你修改应用,添加选项、删除字段。
拍照生成应用这个微软也可以做到,但我发现钉钉还剧透了一个很棒的能力,就是智能推荐选项字段,帮你补全。这个能力虽然看起来简单,但是技术上实现起来难度应该很大,需要给大模型输入大量的行业know how。
钉钉把自家宜搭低代码的应用模板给大模型学习,就等于是把各行各业(制造、医疗、建筑等)及各类高频业务场景(人事行政、财务报销、生产制造等)都喂给了AI,构建了丰富的领域业务数据。
有了领域业务知识,大模型在生成应用时,对业务人员提出的需求理解就会更加准确,生成的应用也更加精准。
这种能力对于不懂代码的业务人员是非常便利、非常友好的,他们不需要再依赖程序员去实现类似的需求,自己分分钟就可以把应用开发出来。
这类拍照或者自然语言生成的应用,结合我去年给大家介绍过的钉钉酷应用能力,还可以实现一键把应用部署在群聊里。通过动态卡片的方式,让业务人员在一个群里就能完成人机交互,聊着天就把事儿给办了。
看到这里,你肯定会有这个疑问:AI都支持自然语言编程了,这么强大了,它能完全替代程序员吗?
对于初级程序员来说,如果只会做CRUD,AI的威胁非常大,因为明确的、有规则的需求对于AI来说是小菜一碟,分分钟搞定。
对于高级程序员来说,在编程中也少不了增删改查,这时候AI就是一个非常好的帮手,因为对于繁琐的、重复的代码工作,都可以交给AI来完成。在这个过程中,高级程序员只要去“指导”它,“引领”它就可以了,减少了无效的时间浪费。
高级程序员可以把自己的精力放在更需要创造力的工作上来,对于现在的AI来说,让它直接生成巨型的复杂系统,它还是力不从心的。
比如我们告诉AI:
我要创建一个电子商务系统,包括用户管理,商品管理,订单管理,仓储管理等常见的功能,需要支持秒杀活动,优惠券,积分系统等功能,帮我把代码都写出来。
AI是绝对不可能给你实现的,因为这样的需求太模糊,如果用流程图,界面图,Use Case等把这些大系统的需求描述出来,没有几百页是不可能的。即使你把这几百页文档都灌给AI,它也不可能给你完整地实现了。
高级程序员需要出马,把大型系统进行分解,形成各个模块,然后让AI介入生成代码,生成应用。
可以看出,自然语言编程已经发展到了一个非常高的层面,可以成为程序员提升效率的巨大助力。
在未来,没有纯粹的码农,每个人都需要深入理解自己所面临的挑战,并通过智能化的生产力工具去快速解决问题。
钉钉发布会的几个场景演示,虽然只是工作智能化的一小步,却展示出了远超“通过聊天生成代码的能力”,可以直接创建、部署,在群里运行应用,真是非常方便。
工具的价值就在于能否更好地服务于人,用机器提升人的生产力。
我们可以畅想,随之智能化的进一步发展,开发应用的能力会不会就像用Word一样,变成一种普遍的能力呢?这是一件特别有想象力的事情,谁都难以预料,只能交给时间来证明了。