Login
网站首页 > 文章中心 > 其它

编译器与解释器原理_idea是编译器还是解释器

作者:小编 更新时间:2023-08-05 00:46:27 浏览量:72人看过

上一章我们已经了解到,编程语言其实就是一种我们人类易于理解的程序语言.我们用这种编程语言编写的程序就称为源代码.这些源代码是通过翻译器这么个东西,被翻译成二进制指令,从而让计算机能够执行我们的指令.

那么,这其中发挥很大作用的翻译器又是怎么回事?

编译型语言与解释型语言

编译型语言与解释型语言

其实,翻译器不止一种.我们根据翻译器翻译的时机,将它分为了编译器和解释器.

编译器与解释器原理_idea是编译器还是解释器-图1

相应的,编程语言也分为了编译型语言和解释型语言.

编译型语言要求将所有的源代码通过编译器转换成二进制指令,也就是生成一个可执行程序(比如Windows下的.exe文件),比如汇编语言、C语言、C++等都是编译型语言.

解释型语言,顾名思义就是将源代码一边转换,一边执行.就好像你阅读文章一样,读到哪程序执行到哪.这种方式不需要生成可执行程序,使用会更加方便,比如Python、PHP、JavaScript、MATLAB等都是解释型语言.

操作系统

操作系统

另外大家需要了解的一点是,计算机程序都是运行在操作系统中的,目前我们比较熟知的操作系统平台都有Windows、Linux、MacOS,当然这三种操作系统都不是瞬间诞生的,也都经历了操作系统几十年的发展,才完善成我们目前熟知的版本.长时间不同发展,导致不同的操作系统平台之间底层的内部结构截然不同,也就是说能够在Windows系统运行的程序,拿到MacOS下便会无法运行,同理,能在Linux平台下执行的程序,也不能在Windows平台下执行.

编译器与解释器原理_idea是编译器还是解释器-图2

除了程序不能跨平台使用之外,源代码也不能跨平台使用.例如C语言中,可以让程序暂停的"睡眠"函数,在Windows平台下函数名是Sleep,但在Linux平台下该函数名是sleep,首字母大小写不同.而且函数中的参数含义也不同,Sleep的参数是毫秒,sleep的参数是秒.

当然,以程序员的勤劳度来看,是不会做出这么费力不讨好的事情的.事实上,程序员有各种方法来解决这个问题.

跨平台语言运行原理

事实上,关于跨平台,编译型语言和解释型语言走上了不同的道路.虽然道路不同,但原理是一样的.

比如Java这门语言,之所以能够跨平台,是因为它在操作系统上层,又搭建了一个叫做Java虚拟机(Java Virtual Machine,简称 JVM)的东西.你可以把JVM理解成一个底层软件,而且针对不同的平台有不同的版本:Windows版,Linux版、MacOS版,这三个版本的JVM安装在了这三个平台上,我们编写的Java源代码会被JVM转换成字节码,字节码是可以在Java虚拟机上运行的.流程如下图:

a=>operation: Java源代码
b=>operation: Java字节码
c=>operation: JVM(Java虚拟机)
d=>operation: 不同的操作系统(Windows、Linux、MacOS)
a->b->c->d->e

Java语言运行流程

这样一来,你只需要写一份源代码就可以了,只要在操作系统中安装上对应的Java虚拟机,就可以平滑运行Java软件了.所以Java打出的口号就是:一次编译,处处运行.

a=>operation: 编译型语言源代码
b=>operation: 编译器(生成机器码)
c=>operation: 可执行文件
d=>operation: 不同的操作系统(Windows、Linux、MacOS)
e=>operation: CPU运行机器码指令

a->b->c->d->e

编译型语言运行原理

相对于编译型这种只有少数语言支持跨平台的语言来说,解释型语言几乎都能跨平台."一次编写,处处运行"就是解释型语言的特点.

那么为什么解释型语言就能跨平台呢?

这一切其实都归功于解释器.

解释器其实就类似于Java虚拟机,也是编程语言与操作系统之间的中间层.官方会针对不同的平台开发不同的解释器,这些解释器会把同样的源代码在不同的操作平台下转换成对应平台"认识"的机器码,兼容了不同平台之间的差异,从而解决了跨平台的问题.

编译型和解释型语言另外一个明显的区别就是:

使用编译型语言开发的可执行程序,源代码是无法获取的,所以程序一般是闭源的.

a=>operation: 解释型语言源代码
b=>operation: 解释器(生成机器码)
c=>operation: 不同的操作系统(Windows、Linux、MacOS)
d=>operation: CPU运行机器码指令

a->b->c->d

解释型语言运行原理

关于Python

Python属于解释型语言,所以运行Python程序需要安装对应平台的解释器.也就是说我们使用Python无需考虑不同平台的兼容性问题,目前常见的如Linux、Windows、MacOS、Android、PocketPC等操作系统,Python都可以完美运行!

总结

我们将编译型语言和解释型语言的差异总结如下:

以上就是土嘎嘎小编为大家整理的编译器与解释器原理相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章