前几天我预测《因为 ChatGPT,未来十年中国会新增五亿程序员》。朋友们纷纷追问:「你的程序员的定义是什么?」「只会问问题的人怎么能叫做程序员呢?」「你是不是在偷换概念?」
那么让我来定义一下我脑子里的程序员:
凡是可以用程序,较准确地控制电脑,完成较复杂操作的人,都叫程序员。
这个程序员的定义还是有边界的。
会开关电视,会用微波炉,会按电梯,都不是程序员,因为他们只是使用某种界面,按个按钮,控制机器做一些简单的操作。他们会使用工具,却不是用编程的方式使用工具。他们应该被归类为用户,而不是程序员。
我定义的程序员(注一),至少需要有这么几个要素:
「较复杂操作」
除了按个按钮执行某个操作以外,需要有能力做一些判断。比如条件判断。以微波炉为例,可以让微波炉完成如下操作:
也就是如下代码:
或者控制它做循环:
也就是:
或者组合调用其中多种功能:
凡是能够做这些事情,或者组合做这些事情,完成某种程度的自动化的人,我都称为程序员。
「用程序」的含义
可惜大多数微波炉的面板无法支持如上的操作,所以真的做的话,可能还需要连一根线到微波炉的主板上,然后编写一些特定的程序。所以,完成如上操作的人看起来都很高深,在键盘上需要一阵猛敲,才能完成。他们就是现在的程序员的形象。
但是未来,如果机器可以支持更好的人机交互,让人们可以用自然语言,通过语音就可以完成如上程序指令的输入,想象一下,这些人「说」出来的,自动的循环,判断,执行,并且还一层层组合,这到底是不是程序?
「程序员鄙视链」
对于什么才是程序员的标准,哪怕在程序员内部也不统一。
每个人都把程序员的定义,刚刚好划在程序员鄙视链上自己的身后,确保自己是程序员,而自己身后的,统统不是。
比如有些人认为只有用汇编写系统内核的,才叫程序员;写 C 语言这种近乎于自然语言的高级语言的,肯定不是程序员。(这样的人现在年纪都很大了)
写 C 的认为,只有写 C、C++ 的才算程序员。至于写 PHP,Python 这些近乎于解释语言的,肯定不算。
写 Python 的觉得写 JavaScript 的这种前端语言的,不算严格意义的程序员。
写 JavaScript 认为, 只会写 HTML 这种标记语言的,绝对不是程序员。连一个循环都写不出来,都不可以执行的,怎么能算程序员。(如上的鄙视链或许在某些群体的想法中还有位置的调换)
而所有的程序员无论处在哪一级,一定有一个共识:就是用自然语言写 prompt,跟机器直接对话的,那 100% 不是程序员。
但是,我们如果看历史,这条鄙视链的延展的过程,就是机器和人的接口不断进步,难度越来越低,越来越接近人类自然方式的过程。说做 prompt engineering 的人不是程序员,仅仅是惯性和不适应使然。
所以,我坚信,他们就是程序员。回答完毕。
新 AI 程序员的阶梯
这一群新的我们暂且叫他们 AI 程序员的人群,我们也可以分一个阶梯。
第一层,prompt 使用技巧。
第二层,在实际工作学习生活中善用 AI。
第三层:用工程师的创造力,把多种技术拼接起来,以实现更强大的功能。
第四层,与 AI 有关的心理学、社会学、经济学、哲学等课程。
领取专属 10元无门槛券
私享最新 技术干货