image.png

编程语言

编程语言是对物理世界运行规律的抽象;
物理世界中的物质对应编程语言中的数据,
物理世界中的行为对应编程语言中的算法。

行为作用于物质,产出新的物质,即是物理世界中的创造过程;
算法作用于数据,产出新的数据,即是信息世界中的创造过程。

物理世界中物质的各种属性可以被数字化,这就意味着物理世界可以被映射到信息世界中;
人脑把物理现实解析为信息,从而连接物理世界和信息世界,本质上和计算机把物理现实解析为数据是一样的。

编程语言通过把物理世界的物质和行为数字化(抽象化),从而在信息世界上创造新价值,创造出来的新价值又可以影响物理世界。这个过程本质上和人脑通过感知和思考产生新知识,然后解释和改造世界是一样的。

编程语言通过“算法处理数据”模拟的是“人脑的思考过程”。人使用大脑进行思考需要消耗生物能,计算机运行程序信息需要消耗电能。人需要休息,计算机则不需要。

数据类型

设计出数据类型,更多得是为了使人们能够更加舒服地使用编程语言,数据类型是人们描述和认知世界的工具。
物理世界中物质的各种特性需要通过数字去衡量,人们认知和改造世界的效果也需要通过数字进行衡量。数字是认知和思维过程的关键要素,所以,编程语言中都抽象了“数值类型”这个数据类型,为了在不同场景下使用不同的度量标准,按需使用计算机物理资源,又会抽象出“byte/short/int/long/float/double”这些不同量级的数据类型,类似“纳米/微米/厘米/分米/米/千米”。
大多数编程语言都有“布尔类型”这个数据类型,这是关于“逻辑对错”的抽象,只要设想出合适的界定条件,纷繁复杂的逻辑推演过程,就可以层层二分。另外,抽象出来布尔类型更多的是为了贴近人的思维习惯,增加程序可读性。
还有一个主要的数据类型是字符型/字符串类型,抽象出字符串类型是为了进行自然语言处理。世界上存在的很多不同的自然语言,通过把自然语言和数字进行一一匹配,就需要字符集。机器语言和自然语言通过字符集实现沟通,类似“中文屋”。

数据结构

数据结构描述的是数据之间的排布方式。不同的数据结构在计算机物理空间上的排布方式不同。比如:线性表结构是在数据之间只有前后关系,前后两个数据节点连城一条线。直接利用空间的连续性进行排布的是数组,通过指针使在空间上不连续的节点连成一条线的是链表。栈和队列同样是线性表结构,数据节点之间只有前后关系,所以栈和队列是用数组和链表来实现的。但是栈和队列限制了数据的操作方式,栈的操作方式是“后进先出”,队列的操作方式是“先进先出”,之所以使用特殊的操作方式,是为了在特定的业务场景中解决特定的问题,栈和队列的数据操作方式是对现实生活事件的抽象。

运算

有了输入数据,再通过运算,就可以得到输出数据。运算包括算术运算和逻辑运算两大类,对应着现实中数学运算和逻辑推理。