https://www.cnblogs.com/sword03/archive/2010/06/27/1766147.html

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

  高手说:

  解释器是一条一条的解释执行源语言。比如php,postscritp,javascript就是典型的解释性语言。  

  编译器是把源代码整个编译成目标代码,执行时不在需要编译器,直接在支持目标代码的平台上运行,这样执行效率比解释执行快很多。比如C语言代码被编译成二进制代码(exe程序),在windows平台上执行。

  菜鸟说:“我还是不明白,能给个形象的比喻么?”

  高手说:“给你讲个故事。”

  母亲打电话给儿子说:“你爸最近身体不好,家里人少不热闹”。

儿子想,对啊,爸年纪大了,身体不好,买点牦牛骨髓壮骨粉不错,于是儿子就去超市买了牦牛骨髓壮骨粉。

  儿子又想啊,最近黄金搭档很火,买点给爸试试。于是儿子又去买了黄金搭档。

  从超市回来后,儿子又寻思母亲说的“家里不热闹”,嗯,家里的小皇帝自从上寄宿学校后就比较少回来,估计是老人家想孙子了。儿子于是给上高中的儿子打了个电话,让他周末回来看看。

  

  母亲打电话给女儿说:“你爸最近身体不好,家里人少不热闹”。

  女儿就想,应该给爸做点什么呢?于是她拿出张纸开始罗列条目,先写上了壮骨粉和黄金搭档。然后,想着让老人家看看外孙应该不错,于是就在纸上加上了一句,一家人回爸妈那里看望看望。最后纸上就写着:

  1.壮骨粉和黄金搭档

  2.一家人去看望爸妈

女儿见到女婿后,就将这张纸上的信息编成短信发给了工作的女婿。

  女婿一看就明白了,下班后先去超市买了补品,然后开车回家带着妻儿就去看望岳父岳母了。

想到什么了吗?

  菜鸟说:

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

  高手说:

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

  从功能上看,解释器和编译器确实不一样。

  然而,从流程和结构上看,二者却非常相似。

  儿子和女儿听到母亲的话以后,都是从两个方面来思考:老人的身体和老人对小辈的思念。以此为据,儿子和女儿都做出了自己的决定。只不过一个直接去做了,另一个却将所要做的事情翻译成另一种载体--短信--给存储起来。

解释器和编译器也是如此,读入源语言后,解释器和编译器都要进行词法分析、语法分析和语义分析,之后,二者开始有所分别。解释器在语义分析后选择了直接执行语句;编译器在语义分析后选择将将语义存储成某一种中间语言,之后通过不同的后端翻译成不同的机器语言(可执行程序)。如下图所示:

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

转载于:https://www.cnblogs.com/maidongdong/p/11231538.html

儿子和女儿——解释器和编译器的区别与联系相关推荐

  1. 解释器和编译器的区别

    --------------------------------------------- -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163.com ------------ ...

  2. 笔记:关于解释器与编译器以及机器语言与机器语言的二进制文件

    关于解释器和编译器的区别: 解释器是一种能够读取和执行源代码的软件程序.它可以将源代码逐行翻译成机器语言,并执行这些指令.与编译器不同,编译器是把源代码翻译成机器语言的二进制文件,然后再执行这个二进制 ...

  3. C++ 笔记(01)— 环境设置(安装g++、g++ 编译 C++、 生成可执行文件流程、解释器与编译器区别)

    1. g++安装 在 Linux 或者 UNIX 系统上,可以通过下面命令来查看是否安装了 GCC . $ g++ -v 如果已经安装 GNU 编译器,则有以下输出: wohu@wohu:~/C++$ ...

  4. JVM解释器和编译器

    首先看一个命令 [root@insure ~]# java -version java version "1.8.0_191" Java(TM) SE Runtime Enviro ...

  5. 编译原理课程实践——实现一个初等函数运算语言的解释器或编译器

    编译原理课程实践--实现具有初等函数运算语言的解释器或编译器 作者:Sylvan Ding |转载请注明文章出处! 摘要:本文主要内容是设计词法分析器.语法分析器(LL(1).SLR(1))和语义分析 ...

  6. 执行引擎、解释器、编译器、JIT编译器的恩怨情仇

    学习宋红康老师的JVM课程已经有一段时间了,学习过程中发现,有些内容遗忘得很快,虽然自己也用印象笔记记录了,但是如果没有输出,知识仍然不能完全地消化.因此,决定在JVM专栏中记录和总结学过的内容,欢迎 ...

  7. jvm与jit编译器的区别_了解jvm和jit编译器的第1部分

    jvm与jit编译器的区别 Hello people!! 大家好!! I can see that the Java community is growing a lot but there are ...

  8. rasp 系统_RASP研发踩坑之 解释器与编译器

    怪力乱神 一般认为开启注入后,http调用栈变长,响应时间变长了,系统的 QPS下降,但是我的组员在对RASP 进行性能压测时发现了一个"奇怪的事情",相比于没有开启注入的场景,开 ...

  9. 桌上有一空盘,最多允许存放一个水果。爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。 试用P、V操作实现爸爸、儿子、女儿三个并发进程的同步。

    问题描述:桌上有一空盘,最多允许存放一个水果.爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果. 试用P.V操作实现爸爸.儿子.女儿三个并发进程的同步. 问题分析及思路: 本题 ...

最新文章

  1. JFreeChart DateAxis用法
  2. 亚洲游戏行业遭遇史上最大DDoS攻击,微软:我给扛下来了
  3. RecyclerView复杂适配器的终极形态?代码更解耦
  4. 即时通讯音视频开发(八):常见的实时语音通讯编码标准
  5. 【网址收藏】kubebuiler中文文档
  6. 消息队列之RabbitMQ
  7. Cloud for Customer的设置加载机制
  8. 20-21-2网络管理quiz5
  9. 《大数据——大价值、大机遇、大变革》试读
  10. 强大的日志分析工具AWStats
  11. 13. Django基础:admin后台管理
  12. 互联网专用计算机屏保,18个Windows 98屏保,简直怀念!
  13. 网卡82546驱动linux,Dell服务器常见Linux驱动选择
  14. SAP UI5 初学 ( 一 )、简介
  15. Windows快捷键
  16. SSL证书以及其验证过程
  17. C++基础面试问题总结
  18. 让靠谱的人推荐靠谱的人:基于关系链计算的职场社交应用“脉脉”,上线“好友推荐候选人”功能
  19. 基于android的线上教育app
  20. append()方法

热门文章

  1. 你听说过反摩尔定律吗?
  2. JVM 常见异常及内存诊断
  3. 2022-2028年中国自主可控行业深度调研及投资前景预测报告(全卷)
  4. 2022-2028年中国美瞳行业应用市场需求及开拓机会研究报告
  5. Windows10自带搜索增强设置
  6. RPC远程调用通俗理解
  7. pytorch numpy 数据类型转换
  8. 机器学习——标准化/归一化的目的、作用和场景
  9. Nignx集成fastDFS后访问Nginx一直在加载中解决
  10. LeetCode简单题之统一一致字符串的数目