码出个世界

导航

python解释器到底是什么?

相信大家平时没少用过python编译器,但是要是让你解释一下Python编译器,你能说出个大概吗?今天我们就来追根溯源一下!

 

 

首先给大家介绍一下计算机编程语言

 

计算机编程语言主要分为三类:机器语言、汇编语言、高级语言。

其中机器语言和汇编语言属于低级语言

高级语言有编译型语言和解释型语言。两种语言对应着两种不同的翻译方式,一种是编译翻译,一种是解释翻译。

 

一、低级语言:

优点是执行速度快,但代码编写难度较大可读性较差。另外,低级语言编写的程序只能在一种计算机上运行,想要运行在不同的机器上,必须重写。低级语言是早期的一种计算机编程语言,现在只在很少的特殊场景中使用了,低级语言分为以下两种:

1.机器语言:是一种计算机可以直接识别并执行的二进制指令集,无需经过翻译,每一操作码在计算机内部都有相应的电路来完成它。机器语言使用绝对地址和绝对操作码。不同的计算机都有各自的机器语言,即指令系统。从使用的角度看,机器语言是计算机最低级的,最原始的语言。

 

2.汇编语言:想我们写代码的时候是操作一串串的01序列,难度得有多大。为了克服机器语言的缺点为了克服机器语言的缺点,人们就用一些助记符来代替机器码。如ADD、SUB、MOV等,这就有了很大的进步,可以方便的编写,但是它仍然是对机器进行操作的,汇编语言是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

 

二、高级语言:

我们现在大多数人使用的语言,如C、C++、Python、Java、Matlab、LabVIEW等等,都属于高级语言,相对于低级语言,它更接近于我们平时正常的人思维,其最大的特点是编写容易代码可读性好。实现同样的功能,使用高级语言耗时更少,程序代码量更短,更容易阅读。其次,高级语言是可移植的,也就是说,仅需稍作修改甚至不用修改,就可将一段代码运行在不同类型的计算机上。其缺点也很明显,使用高级语言编写的程序运行时,需要先将其翻译成低纸语言计算机才能运行它,在翻译过程中可能程会产生一些多余的部分,运行效率低些。另外,对硬件的可控性相对于低级语言弱些,目标代码量较大。高级语言有编译型语言和解释型语言。两种语言对应着两种不同的翻译方式,一种是编译翻译,一种是解释翻译。

 

1.编译型语言:典型的如C、C++、Pascal等语言,都属于编译型语言。它是编译的时候直接编译成机器可以执行或调用的程序,如exe、dll或ocx等类型。如将C语言可直接编译成exe程序,运行时直接运行exe程序就可以了,无需重新编译,所以程序执行效率较高。其执行过程如下所示:

相对于解释型语言,其优点是运行速度快,代码效率高,编译后程序不可以修改,且看不到源码,保密性较好。

缺点是代码需要经过编译方可运行,可移植性差,只能在兼容的操作系统上运行。

由于其执行速度较快,同等条件下对系统的要求较低,因此常用于开发操作系统、大型应用程序、图像处理、数据库开发等场合。

 


编译:

1、利用编译程序(也称为编译器)从源语言编写的源程序产生目标程序的过程。 2、用编译程序产生目标程序的动作。 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。 

编译语言是一种以编译器来实现的编程语言。它不像直译语言一样,由解释器将代码一句一句运行,而是以编译器,先将代码编译为机器码,再加以运行。理论上,任何编程语言都可以是编译式,或直译式的。它们之间的区别,仅与程序的应用有关。
 
---------------源代码(也称源程序)是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。一般为高级语言, 如Pascal、C、C++、Java、汉语编程等或汇编语言。
---------------目标代码指计算机科学中编译器或汇编器处理源代码后所生成的代码,它一般由机器代码或接近于机器语言的代码组成。目标文件(object file)即存放目标代码的计算机文件,它常被称作二进制文件(binaries)。通常采用三种形式:机器语言,汇编语言,待装配机器语言模块。
 

 

2、解释型语言:典型的如Java、Python、Matlab等语言,都属于解释型语言。这类程序不需要编译,运行时使用一个专门的解释器去翻译,每一条语句都是执行的时候才翻译,所以这类程序每执行一次就要翻译一次,运行效率较称低。其执行过程如下所示:

相对于编译性语言,其优点是可移植性好,只要有解释器环境,程序就可以在不同的操作系统上运行。

缺点是代码需要有专门的解释器,在程序运行时,除要给用户程序本身分配内存空间外,解释器也占用系统资源,所以其运行速度较慢。另外,也很难达到像C、C++那样操作系统底层操作的目的。

解释型语言常用于,一是对运行速度要求不高(如一些网页脚本、服务器脚本、接口辅助开发等)的场合,二是对跨平台(操作系统的兼容性)有要求的场合。

 

综上可以总结出:

                                     运行速度                                可移植性(跨平台)                            更新                                        安全

编译型语言               快(二进制文件)            差(CPU指令系统变则执行出错)             重新编译                              好(无需提供源码)
解释型语言              慢(边解释边执行)                  好(随身带着解释器)                 仅解释更新的内容                  差(连同源码一起交付)          

 

想必大家已经了解了Python解释器

解释器其实也包括编译过程,只不过该解释器是把Python语言一行一行直接转译运行。解释器不会一次把整个程序转译出来,且不生成目标代码。Python解释器由编译器和虚拟机构成,编译器将源代码转换成字节码,然后再通过Python虚拟机来逐行执行这些字节码。


python程序执行过程:


1、执行 .py 文件,就会启动python解释器
2、编译器将源文件解释成字节码
3、虚拟机将字节码转化成机器语言,与操作系统交互
4、程序运行结束后,将字节码存到pyc文件,便于后续直接执行


 














posted on 2021-07-10 22:14  码出个世界  阅读(1608)  评论(0编辑  收藏  举报