经常不写字,一写几千字。
程序员是让我最吃不透的一个群体,也不知到他们有没有意识到“危机”?
从前,很多程序员担心自己的工作岗位,不断地跳出来声讨“低代码/无代码”,现在真正的威胁来了,却不吭声了。今天就这个所有程序员面临的威胁——OpenAI Generating Code的问题和大家探讨一下。
AI生代码&低代码生代码的区别
首先声明一下,不能生成代码的低代码平台不在今天讨论之列(不能生代码的低代码平台顶多算是企业内部工具,不具备通用性),国内比较流行的生代码平台参考参考iVX、CodeWave...等。
对程序员来讲,哈哈,最根本的区别就是“AIG Code”目标是干掉程序员职业,也就是以后没有程序员这个岗位了,一窝端。“低代码/无代码”只是让程序员换一种开发方式而已(例如图形化),有可能创造更多程序员岗位。
GPT4生成的代码片段
iVX的逻辑开发界面
iVX生成代码
iVX生成Java代码
从前,我在各个平台看到很多程序员的对低代码所有产品的“谩骂”,很多人甚至都没有去使用一下,更没有对低代码产品进行认真的分类和分析,以点带面,以偏概全。虽然我不得不承认,国内的“低代码”行业确实存在乱象,很多都是魔改开源产品,但是其中也有非常不错的;也不全是基于“运行时”的低代码,也有生成代码的“低代码”产品。程序员作为理性思考的代表,不应给去攻击概念,而是去验证不同产品“功能”和“性能”。
本质上,能够生全栈代码的低代码平台,已经初步具备了图形化编程语言的能力,值得大家好好研究研究。
“AI生代码“是否有弱点
现在“AI生代码”我个人认为已经处于瓶颈了,而且还有一些核心的问题没有解决。
一 评估方式我觉得不准确
从评估结果来看,大部分的标准都是一些算法题目,这些题目对于AI训练很容易收集整理,并在一定范围内“泛化”。而算法题目对于编程来说,是微不足道的一小部分,因此我并不觉得这个能代表AI的普遍编程水平。
二 实测下来问题还很多
经过很多实际测试:
1. AI自动生成的代码,错误很多,而且很多时候它也没办法调试正确;
2. 超过200行代码,如果不太容易找到例子的那种,基本上运行不了的;
3. AI现在越来越懒,经常拒绝给我写代码,里面大量的填空题,不知道是不是为了省GPU的资源...
三 AI瓶颈明显
现在能找到的代码基本上都被训练完了,如果没有算法上大的突破,很难想象能有大的改进空间;模型就那么一类(Transformer为核心),数据又已经能用的都用上了...,留下空间明显不大;
现在的编程语言代码,AI学习就和学习其它文本一样,没有办法实际“运行”,去看结果,也就没有办法建立“代码和运行时以及运行后的逻辑映射”,这也导致代码的学习异常困难;实际上很多代码的能力,都是通过备注学习到的,而不是建立在对代码本身的理解基础之上;
现在的语言和框架太多,太复杂,光一个网页的表达就有很多很多语言和框架,这导致学习的难度指数增加。有可能现在所有人类代码都不足以让AI真正学会“如何编程”?
程序员的未来如何选择?
一 拥抱新的技术和技术带来的变化
尝试AI辅助写代码和一些代码生成型的代码产品,可以将编程效率提升很多很多。包括上面提到的产品,以及使用copilot这样的辅助工具。另外,在具体的知识和技术解决方案上咨询GPT这样的产品,现在基本上是比较靠谱的,也可以提升不少的开发效率。
二 核心培养的还是“编程思维”和“架构能力”
由于种种原因,现在的编程语言都是以“文本”的形式呈现,但实际上很多图形化的编程语言在表达“程序逻辑”上会更有优势,更加直观,开发也更佳便捷。例如Scratch,iVX等。
在伯克利等很多美国高校,计算机和其它专业的新生一开始都是学习Scratch的,目的就是掌握掌握“编程思维”。
三 更关注“业务”本身,关注“如何解决实际问题”
至少部分从代码中解放出来,更关注“业务”和“产品”,不要执着于代码本身。很多程序员都以自己会一种“别人不同的语言”为荣,而实际上“代码”只是人创造出来解决问题的一种技术手段,具体来说“就是一种建模的手段”,解决问题比代码更重要。
总结一下:
如果想学编程,找工作,搞副业:
其实没有什么必要再去学习前端语言、后台语言、配置服务器、Linux操作,等你学出来,基本上已经用处不大,而且开发效率也不高。前面提到的图形化编程语言(生成代码的低代码平台),可以去尝试一下,生成代码质量高,可以很快让你进入开发的状态,快速开发出目标产品,学以致用。推荐iVX和CodeWave,Scratch稍微低幼一点。
如果搞研究:
可以尝试拓展一些新的图形化编程语言,其实已经比较成熟,可以快速辅助完成原型/模型的开发。
已经是前端程序员:
借助图形化的编程语言,快速完成后台的开发,拓展自身能力边界。前端真没啥好纠结的,我觉得最核心还是开发效率,除非要求特别高的,不然快个10ms慢个10ms,真没人能感知到。