二进制到高级语言
二进制到汇编语言
二进制
CPU相当原始,只能先把数据从一个地方搬到另一个地方,进行简单运算,再把数据搬过去,这其中没有任何高难度动作。
程序员只能按照CPU的旨意直接用0与1编写指令,这就是早期代码。
汇编语言
程序员仔细研究汇编语言,发现CPU执行的指令总共也就几个,因此把机械指令和对应的操作系统进行一个简单的映射,将机械指令映射成人们能看懂的单词,就这样,汇编语言出现了。
从此,程序员只需要记住人们可以认识的add、sub、mov等单词即可
高级语言的雏形
条件与循环的诞生
如果指令不涉及某个具体动作,而是做出选择,需要根据某种状态来决定做的事,条件语句出现了:1
2
3
4if ***
blablabla
else ***
blablabla
此外,有许多重复执行的指令,看起来就是在原地打转时,循环语句出现了:1
2while ***
blablabla
函数的诞生
如果需要多组相同的操作,如果说只用汇编语言,无疑是增加多余的工作量,于是便出现了函数,人们可以先打包重复的指令。等使用的时候在声明一下就可以。1
2func abc:
blablabla
递归的运用
当条件、循环、函数综合在一起时,会出现反复嵌套的情况,于是数学中递归的思想派上了用场
我们将递归写出来的代码用树枝来表示,于是便出现了语法树。
这个语法树时由语法定义把代码以书的形式组织起来,每一个节点的表达是非常简单的,用这些节点便可生成机器指令,于是编译器诞生,也标志着高级语言的诞生
解释型语言的诞生
由于市面上CPU的型号太多,导致A型号的机器生成的机械指令没法被B型号机器识别。这是硬件厂商设计好的,不能修改,但是我们可以使用程序来仿真CPU执行机器指令的过程,自己定义一套标准指令,这是只需”一次编写,到处运行”,这样解释型语言诞生了。
解释型语言使用CPU仿真程序(虚拟机)来执行代码,而虚拟机还有一个外号—解释器
至此,C/C++,以及Java、Python等编程语言便顺利构建。
编译器的工作原理
首先要注意:编译器就是一个普通程序,它与其他程序没有任何特殊的地方
对于编译器,它首先会把每一个符号切分出来,并将每个符号与所附带的信息打包出来,形成Token。

