什么是解释器?

首先,我们写的程序都是由计算机的CPU去执行的,那么这个过程是这么样的呢?
image.png

第一步:xxx.py文件
在编写java程序的时候,我们写的文件后缀是 xxx.java

image.png
那么如果是python程序,那么则是 xxx.py。
现在问题来了,我们写的xxx.py程序,计算机CPU能认识吗?它知道怎么去执行我们的写的xxx.py程序吗?
显然是不可以的,因为CPU只认识“01010101010”这样的一串东西。那么因此你就得通过一种方式,想办法将你写的程序转换成 “01010101010“这样的CPU指令。

这个“01010101010”也就是上面图像中的”机器码”,目前人类发明的CPU就只能认识”01010101010”。

第二步:编译成字节码
接下来,就是想办法怎么将 xxx.py转换成机器码了。
在我们写的xxx.py转成机器码之前,需要先转成字节码,所以就奇怪了,为什么过程是这样的呢?
image.png
至于为什么要有一个转成字节码的过程,这个后续再研究。

我们先看看,我们写的xxx.py转成字节码后,这个字节码长成什么样的?
image.png
你看看,我们自己就简单写了一行代码 test(2,’hello’),然后编译成字节码就成右边这个鬼样子了。

你可能疑问又来了,我写的xxx.py谁给我编译的?我要点击什么按钮才编译?
首先我们写代码,不同的语言使用不同的写代码软件,比如java,就使用idea工具。写python的基本大多数喜欢

Visual Studio Code

这个是微软发明的写很多语言的工具,你可以用它写前端代码、写python、写java代码等等等。一般我们java程序员用
image.png

在我们写好代码,保存后,那么此时编译器会自动的感知到我们写的代码,然后自动的给我们编译了,
image.png
因此,从左边到右边的过程是由我们写代码的工具帮我们干的,并不需要我们额外做什么事情。

第三步:解释器
啥玩意呢,你还记得,我们的CPU执行的时候,只认识”000101010101”了嘛?
image.png
你看编译后的,字节码是”0101010101”嘛?????
明显不是呢,那怎么办呢?这个时候就靠解释器去帮忙了。

那么解释器是怎么将字节码里面的东西,搞成”01010101”CPU能懂的指令呢?

首先我们编写完xxx.py代码后,点击写代码软件上的运行按钮后,然后写代码的软件vs code,主要做以下几个事情:

  1. 1)扫描到我们写的那些xxx.py,然后一个一个将其编译成字节码文件<br /> 2)在编译好字节码文件后,vs code于是调用这个字节码文件,开始运行。

重点来了,调用字节码文件开始运行,刚才说了字节码文件,CPU是不懂得,因此在运行的时候,解释器会去读取字节码文件。
image.png解释器读取这个玩意

然后按照行号 0、2、3、….、12去依次解释成”010101010”发送给CPU。

image.png
看到没,这就是解释器干的事情咧。