要回答这个问题,首先必须搞明白一个问题:编程的本质是什么?

提到编程,大部分人第一想到的是编码,再往深的思考,可能会想到数学。

对吗?

不错,但不彻底。

那么,编程的本质到底是什么?

编程的本质是对现实建模

OA是对企业建模。

电子商务是对交易建模。

AI是对人脑建模。

因此,对程序员来说,面对一个具体的需求,首先要考虑的不是架构,不是编码,而是要思考,如何用抽象的计算机语言建立一个抽象模型,从而表达具体的人间现实。

然后,我们再来思考,程序员为什么喋喋不休的,不知不疲倦的争论哪门计算机语言更好呢?

抛却商业的喧嚣,不同计算机语言的本质差别是什么?

C和C++差在哪里?

脚本语言(例如js)的使命是什么?

Matlab为啥而生?

穿过语法看本质,不同语言之间的本质差异是对现实的描述方式,也就是建模的方式。

C是一门面向过程的语言,它认为世界就是由无数的过程构成,数据的本质是存储,是过程的结果。但在C++中,认为万物皆对象,数据和函数依赖于对象存在。

选择C语言,就是选择用过程来对现实建模,选择C++是选择用对象对现实建模。

而脚本语言,顾名思义,就是在具体平台上的操作特定的元素,使它们“动”起来。

例如,js的初衷就是在浏览器中操作具体的dom元素,从而使他它们“动”起来。

事实上,在web的早期,js用的最多就是在页面中实现各种“特效”,包括浮动广告,滚动字幕等。

因此可以说,js今天在前端开发中的地位,完全是无心插柳的结果,是对初心的“背叛”(笑)。

而Matlab之所以受到算法科学家的青睐,一个不可或缺的因素就是,Matlab的编程范式特别适合对数学问题进行建模。

我们之所以绕了一大圈来谈具体语言,就是想要印证,一门计算机语言的根本目的就是用抽象的方式来描述具体的世界,也就是建模。

回到本问题,提到“无代码编程”,我想应该是人们期望用通过类似于堆积木的方式,简单配置,拖拽这样的方式来实现无代码编程。

可行吗?如果说可行,根据编程的本质(对现实建模),就等同于说,我们已经寻找到了一种方式,通过简单的,有限的模块来描述现实世界的任何问题。

如果行,推导下去,就会陷入两个死胡同。

一个是世界停止发展了,人类社会不再有新的事物产生(包括技术、制度等),否则,我们就无法用一个简单的,有限的模块来描述不断发展变化的世界。

还有一种推论,那就是世界还在发展,也会变得更加复杂,而为了应对这种变化性,有限的模块必须足够灵活,例如引入更多配置。

但是,一个足够灵活,可以进行各种配置的模块化系统,本身就在演化成另一种计算机语言。配置出一个这样的系统,本身就是一种高技术的工作。

如果是这样,设计这样一个高可配置的系统的目的又是什么?

今天,如果我们可以讨论无代码时代已经来临,专业程序员已经不再被需要。那么,有一个问题我们也可以讨论,那就是专业写作者也已经不再需要。

因为讨论两者都有一个共有的前提:世界已不再变化,复杂度不再增加,没有了新鲜事。

如果还有,两者就会继续存在下去。

从某种意义上说,专业的程序员和专业作家是一类人,一个用自然语言创作,一个用计算机语言。


文章来源于互联网:无代码时代来了,程序员会失业吗?

发表评论