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

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

  高手说:

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

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

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

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

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

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

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

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

  

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

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

  1.壮骨粉和黄金搭档

  2.一家人去看望爸妈

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

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

想到什么了吗?

  菜鸟说:

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

  高手说:

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

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

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

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

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

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

超赞!编译器和解释器的异同,瞬间明白了相关推荐

  1. 学了编译原理能否用 Java 写一个编译器或解释器?

    16 个回答 默认排序​ RednaxelaFX JavaScript.编译原理.编程 等 7 个话题的优秀回答者 282 人赞同了该回答 能.我一开始学编译原理的时候就是用Java写了好多小编译器和 ...

  2. 《编译与反编译技术实战》——2.1节编译器、解释器及其工作方式

    本节书摘来自华章社区<编译与反编译技术实战>一书中的第2章,第2.1节编译器.解释器及其工作方式,作者刘晓楠 陶红伟 岳 峰 戴超,更多章节内容可以访问云栖社区"华章社区&quo ...

  3. PC版微信,也终于上线了这个超赞的功能

    微信有3个超赞的免打扰功能,能大大提升你微信使用效率. 一个是消息免打扰. 不管是群聊,还是单聊,都可以开启免打扰. 只要是给我发过广告的微商或类微商,我都开启免打扰.会清净一些. 另一个是「折叠置顶 ...

  4. GitHub 和 Gitee 开源免费 10 个超赞后台管理面板,看完惊呆了!

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方留言必回,有问必答! 每天 08:00 更新文章,每天进步一点点... 软件工 ...

  5. 超赞网站推荐_字体(更多)超赞-标志性发明

    超赞网站推荐 by Pubudu Dodangoda 通过Pubudu Dodangoda 字体(更多)超赞-标志性发明 (Font (More) Awesome - an iconic invent ...

  6. 超赞的PyTorch资源大列表,GitHub标星9k+,中文版也上线了

    点击阅读原文,快速报名! 作者 | 红色石头 来源 | AI有道(ID: redstonewill) 自 2017 年 1 月 PyTorch 推出以来,其热度持续上升.PyTorch 能在短时间内被 ...

  7. 超赞的贪吃蛇、吃豆人和数字华容道等童年小游戏1行Python代码就能玩

    今天分享一个有趣的Python游戏库freegames,它包含20余款经典小游戏,像贪吃蛇.吃豆人.乒乓.数字华容道等等,依托于标准库Turtle. 我们不仅可以通过1行代码进行重温这些童年小游戏,还 ...

  8. github总star超9K!一个超赞的 PyTorch 资源大列表,有人把它翻译成了中文版!

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 转自:程序员爱码士 自 2017 年 1 月 PyTorch 推出以来,其热度持续上升 ...

  9. Github标星9k+,超赞的 PyTorch 中文资源大列表!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 原来的英文版 GitHub 项目地址: https://github.com/bh ...

最新文章

  1. 前后端分离的思考与实践(三)
  2. 转:C#中的abstract与virtual
  3. Android Tabhost with FragmentActivity
  4. 5.用户APC执行过程
  5. php 数据类型伪类型,PHP之伪类型与变量
  6. mfc程序转化为qt_小峰的QT学习笔记
  7. Deep Glow for mac(AE高级辉光特效插件)支持ae2021
  8. php 价格计算方法,PHP算法逻辑:如何计算购买量?
  9. webrtc 渲染_WebRTC 开发(六)摄像头采集与视频渲染分析
  10. 安装scrapy报错问题解决
  11. java查询F分布表
  12. SpringBoot 导出Excel 固定表头
  13. Linux三剑客之awk精讲
  14. Python爬取必应壁纸
  15. signature=32d532a97f37c02b1149992578cf4af9,~(11)C-CFT PET功能显像Parkin基因缺陷少年型帕金森病患者脑多巴胺转运体...
  16. mybatis 的入参和出参
  17. (R)机器学习--学习笔记--第四章节学习笔记
  18. “微信教父”张小龙2021最新演讲,视频号、直播、创作者透漏了几大重要趋势丨国仁网络
  19. MySQL--数据导入导出
  20. 专门除COD有机物的树脂工艺

热门文章

  1. 形式语言:含偶数个零和奇数个一的正则表达式
  2. (列表,字典练习)寻找班级里面名字最长的人
  3. QT实现简单的医院管理系统
  4. 如何解读微信表情图片的符号问题
  5. 【阅读笔记】SiamMask
  6. iOS MJRefresh 自定义刷新动画
  7. Spring学习笔记(二)
  8. php 生成vbs文件,用VBS实现PHP的md5_file函数代码
  9. 用Python的turtle库写一串糖葫芦!
  10. 各大热补丁方案分析和比较