编译器与解释器

作者: 展昭酷爱写作 | 来源:发表于2017-08-29 10:40 被阅读121次

菜鸟经常将编译器和解释器弄混淆,无奈之下,于是向高手请教。

高手说:“解释器是一条一条的解释执行源语言。比如php,postscritp,javascript就是典型的解释性语言。编译器是把源代码整个编译成目标代码,执行时不在需要编译器,直接在支持目标代码的平台上运行,这样执行效率比解释执行快很多。比如C语言代码被编译成二进制代码(exe程序),在windows平台上执行。”

菜鸟说:“我还是不明白,能给个形象的比喻么?”
高手说:“给你讲个故事。”

母亲打电话给儿子说:“你爸最近身体不好,家里人少不热闹”。
儿子想,对啊,爸年纪大了,身体不好,买点牦牛骨髓壮骨粉不错,于是儿子就去超市买了牦牛骨髓壮骨粉。
儿子又想啊,最近黄金搭档很火,买点给爸试试。于是儿子又去买了黄金搭档。
从超市回来后,儿子又寻思母亲说的“家里不热闹”,嗯,家里的小皇帝自从上寄宿学校后就比较少回来,估计是老人家想孙子了。儿子于是给上高中的儿子打了个电话,让他周末回来看看。
  
母亲打电话给女儿说:“你爸最近身体不好,家里人少不热闹”。
女儿就想,应该给爸做点什么呢?于是她拿出张纸开始罗列条目,先写上了壮骨粉和黄金搭档。然后,想着让老人家看看外孙应该不错,于是就在纸上加上了一句,一家人回爸妈那里看望看望。最后纸上就写着:
1.壮骨粉和黄金搭档
2.一家人去看望爸妈
女儿见到女婿后,就将这张纸上的信息编成短信发给了工作的女婿。
女婿一看就明白了,下班后先去超市买了补品,然后开车回家带着妻儿就去看望岳父岳母了。

想到什么了吗?

菜鸟说:
我这样说不知道对不对:儿子就像是解释器,是想到一点做一点。女儿就像编译器,女婿就像平台,女儿听完后,在纸上罗列出所有要做的事情,女婿就按着指示办事了。

高手说:
就是这样的。儿子对于母亲的话是一条一条执行,女儿是将母亲的话整个翻译成平台能理解的目标语言--短信,整个由女婿直接执行。后者的执行效率会更高。

从功能上看,解释器和编译器确实不一样。
然而,从流程和结构上看,二者却非常相似。
儿子和女儿听到母亲的话以后,都是从两个方面来思考:老人的身体和老人对小辈的思念。以此为据,儿子和女儿都做出了自己的决定。只不过一个直接去做了,另一个却将所要做的事情翻译成另一种载体--短信--给存储起来。
解释器和编译器也是如此,读入源语言后,解释器和编译器都要进行词法分析、语法分析和语义分析,之后,二者开始有所分别。解释器在语义分析后选择了直接执行语句;编译器在语义分析后选择将将语义存储成某一种中间语言,之后通过不同的后端翻译成不同的机器语言(可执行程序)。如下图所示:


总之,解析器和编译器它们在功能上是不一样的,然而从结构上看却有诸多相同,而且在开发时也并没有本质上的差别,这也是很多人将二者混淆的原因之一。究竟是开发解析器还是编译器?只需要依据功能上的实际需要来做出决定就ok了。

相关文章

  • JVM(十六:编译器优化)

    解释器与编译器 解释器与编译器两者各有优势:当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间...

  • 编译器与解释器

    你知道「编译」与「解释」的区别吗? 最近在看一些编译过程的知识点,看的比较多的是英文文献。在这之间经常遇到的两个单...

  • 编译器与解释器

    菜鸟经常将编译器和解释器弄混淆,无奈之下,于是向高手请教。 高手说:“解释器是一条一条的解释执行源语言。比如php...

  • 5-编译器与解释器

    编译器与解释器 编译器/解释器:高级语言与机器之间的翻译官 都是将代码翻译成机器可以执行的二进制机器码,只不过在运...

  • 晚期(运行期)优化

    HotSpot的即时编译器 解释器与编译器 编译对象与触发条件 编译过程 编译优化技术 如果还对其他的经典编译优化...

  • JVM(1)---虚拟机在运行期的优化策略

    1.解释器与JIT编译器 首先我们先来了解一下运行在虚拟机之上的解释器与JIT编译器。 当我们的虚拟机在运行一个j...

  • JVM(1)---虚拟机在运行期的优化策略

    1.解释器与JIT编译器 首先我们先来了解一下运行在虚拟机之上的解释器与JIT编译器。 当我们的虚拟机在运行一个j...

  • 浅析Python解释器的设计(二)

    从现代编译器的角度看,解释器和编译器的边界已经相当的模糊。我们后面的讨论说到的编译器就是Python的解释器,没有...

  • 编译器与解释器(5)

    Python的环境我们已经搭建好了,可以开始学习基础知识了。但是,在此之前,还要先说说编译器与解释器相关的内容。 ...

  • java的编译器和解释器浅析

    这篇我们来聊聊java的编译器和解释器。先看看官方的解释: Java Compiler (Java 编译器)Jav...

网友评论

    本文标题:编译器与解释器

    本文链接:https://www.haomeiwen.com/subject/okcodxtx.html