人工智障写代码可以说已经突破了一个临界点,再保持之前的观点就不合适了,我的预期是会有一个paradigm shift,主要表现在两个方面:
首先,英语或者说自然语言真的已经成为新的编程语言了,如果完全不会写代码,artifacts之类的功能可以说是一个质的突破,动手能力强的糊个简单的界面或者逻辑不复杂的应用完全不是问题;如果能够知道一些基本的工程知识,已经可以糊一些稍微复杂的应用;对于资产程序员,复杂的工作可能还干不动,但随手糊个小工具不在话下
然后,很多软件工程的概念会衍生出全新的理念,比如现在的人工智障在debug方面非常糟糕,生成的代码也被认为很难维护,但debug或者维护这件事情本身会不会以后就不需要了,如果说一个问题可以通过生成代码来解决,那么当新问题出现的时候,是不是能通过重新生成代码,而不是修改现有代码来解决?
从趋势的角度来说,大方向已经是比较确定的,想要什么就能生成什么。现在的软件普遍存在的一个问题是,为100个功能付费,但实际用上的可能不到10个,而想要的另外一两个功能,要么必须使用另外的软件,要么根本无人提供只能放弃。畅想一下,未来很有可能就是,想要什么就随手生成一个,每个人都有严格适配自己使用习惯的工具,把个性化这件事做到极致,极大的提高生产力
下一个问题就是,怎么做到?我认为会有四个层面的工作:
最底层也是最重要的,模型的能力。虽说现在各家的基座模型能力开始收敛,好像快要达到上限,但对什么是一个好的代码生成模型,市面上并没有共识,只有很少数的一些测试集,也并不能有什么体系化的结论,所以一切还早
第二层是生成代码的平台,比如replit和cursor之类。其中我更看好也是用的最多的是replit,因为cursor更注重在代码生成,而replit主打生成应用,这两者之间的gap很大,像是部署,数据库,依赖,环境变量等等等等,复杂度不低于代码本身,以及replit所有数据都在云上,可以轻松的在不同设备之间切换,更可以无障碍的在手机和平板上完成开发
第三层是生成的应用。应用的设计出发点是极致的个性化,但也不是每个应用都需要从零开始,replit的remix功能就是一个很好的例子,可以在现有的应用之上叠加自定义功能
第四层是应用的分发。可以是终端应用的分发,世界上没有相同的两片树叶,但一定会有两个人需要相同的应用,无论多么“个性化”;也可以是“原子应用”的分发,让更多的人可以站在前人的肩膀上
然后就是终极问题了,在未来的这个生态里,自己的位置在哪里?hmmmmmmm