程序员的定义 以及新 AI 程序员的阶梯
前几天我预测《因为 ChatGPT,未来十年中国会新增五亿程序员》。朋友们纷纷追问:「你的程序员的定义是什么?」「只会问问题的人怎么能叫做程序员呢?」「你是不是在偷换概念?」
那么让我来定义一下我脑子里的程序员:
这个程序员的定义还是有边界的。
会开关电视,会用微波炉,会按电梯,都不是程序员,因为他们只是使用某种界面,按个按钮,控制机器做一些简单的操作。他们会使用工具,却不是用编程的方式使用工具。他们应该被归类为用户,而不是程序员。
我定义的程序员(注一),至少需要有这么几个要素:
「较复杂操作」
除了按个按钮执行某个操作以外,需要有能力做一些判断。比如条件判断。以微波炉为例,可以让微波炉完成如下操作:
如果放进去的是便当,则
加热两分钟;
否则
加热 30 秒
也就是如下代码:
if (condition)
//do something
else
//do other thing
或者控制它做循环:
每隔 2 个小时
加热 2 分钟
也就是:
while ( 1 ) {
sleep(2 * 60 * 60)
heat(2 * 60)
}
或者组合调用其中多种功能:
先加热
然后冷却 30 分钟
再旋转 30 圈
把门打开
凡是能够做这些事情,或者组合做这些事情,完成某种程度的自动化的人,我都称为程序员。
「用程序」的含义
可惜大多数微波炉的面板无法支持如上的操作,所以真的做的话,可能还需要连一根线到微波炉的主板上,然后编写一些特定的程序。所以,完成如上操作的人看起来都很高深,在键盘上需要一阵猛敲,才能完成。他们就是现在的程序员的形象。
但是未来,如果机器可以支持更好的人机交互,让人们可以用自然语言,通过语音就可以完成如上程序指令的输入,想象一下,这些人「说」出来的,自动的循环,判断,执行,并且还一层层组合,这到底是不是程序?
「程序员鄙视链」
对于什么才是程序员的标准,哪怕在程序员内部也不统一。
每个人都把程序员的定义,刚刚好划在程序员鄙视链上自己的身后,确保自己是程序员,而自己身后的,统统不是。
比如有些人认为只有用汇编写系统内核的,才叫程序员;写 C 语言这种近乎于自然语言的高级语言的,肯定不是程序员。(这样的人现在年纪都很大了)
写 C 的认为,只有写 C、C++ 的才算程序员。至于写 PHP,Python 这些近乎于解释语言的,肯定不算。
写 Python 的觉得写 JavaScript 的这种前端语言的,不算严格意义的程序员。
写 JavaScript 认为, 只会写 HTML 这种标记语言的,绝对不是程序员。连一个循环都写不出来,都不可以执行的,怎么能算程序员。(如上的鄙视链或许在某些群体的想法中还有位置的调换)
而所有的程序员无论处在哪一级,一定有一个共识:就是用自然语言写 prompt,跟机器直接对话的,那 100% 不是程序员。
但是,我们如果看历史,这条鄙视链的延展的过程,就是机器和人的接口不断进步,难度越来越低,越来越接近人类自然方式的过程。说做 prompt engineering 的人不是程序员,仅仅是惯性和不适应使然。
所以,我坚信,他们就是程序员。回答完毕。
新 AI 程序员的阶梯
这一群新的我们暂且叫他们 AI 程序员的人群,我们也可以分一个阶梯。
关于这个阶梯,没有人比我们《客齐集小聚》的负责人,以及 Visiting Engineer Program 负责人 Elfe 写的更加清晰。
强烈推荐大家阅读她写的这篇文章(以及她在此之前写的很多篇相关文章):
她的公众号:
我和 Elfe、樊老师一起思考的 AI 教育的课程体系,也基本上基于这样的阶梯。我们的第一门课程,应该在下周就开始招生。敬请期待。
注一:这个程序员,只是我自己的定义。任何人都可以并有义务在立论的时候明确自己的名词定义,并且基于此定义展开论述。
注二:Visiting Engineer Program 第一期已经于昨天开营。第二期和第三期正在招募中,将于 2 周和 4 周后开营。如果还没有投简历的同学,请在后台回复「简历」获取简历入口。
注三:如果有工程师希望加入我们,也请回复「简历」获取投递简历入口。百姓网过去 18 年中的所有一起工作过的伙伴,如果愿意一起探索 ChatGPT 的可能性,欢迎免面试直接入职。