如何理解解释器,编译器和预编译器之间的关系

解释器:将源码(刚编写好的代码称为源码)翻译成对应操作系统的计算机语言但不生成该计算机语言文件,直接展现源码所对应的功能,等下次运行时再次编译,且源码还是源码,不会产生中间代码或者计算机语言代码,解释器一般是附着在操作系统或软件上(比如浏览器)

编译器:将源码全部转成计算机语言代码,一次编译,终生使用(不更新的情况下)

预编译器:将源码转换成中间代码,然后再交由不同的操作系统的解释器去进行解释

解释器的优点:跨平台性好,因为不同操作系统所对应的计算机语言是不同的,所以如果是编译好的文件,只能在对应的操作系统上运行。

缺点:需要环境里有对应的解释器

编译器的优点:不需要重复编译。

缺点:跨平台性差

预编译器结合了解释器和编译器的优点:将源码先编译成类计算机语言代码(接近计算机语言但是还不是),然后再把剩下的编译过程交由不同操作系统的解释器去解释,比如java,

所以跨平台性好且每次使用时经行编译的时间大大减短

这个时候可能就有同学要问了,那我如果要发布其他平台的软件,我将编译器编译前的源码再重新编译成其他平台对应的计算机语言不就行了?对于这个问题,我的看法是,行,但问题是,每对应一个操作系统你就对应一份计算机语言的软件,当你需要修改需求,更新源码的时候,你不得不再编译好几份对应不同平台的代码,这样工作量相比起解释器来说会麻烦很多

编译器和解释器和预编译器的使用场景:功能比较多的应用会选择软件的形式,既让用户先下载编译好的文件,然后需要使用的时候直接打开,这样做的好处是减少了每次使用所需要要服务器发起请求数据的大小,所以都选择使用编译器和预编译器

功能较少或者使用频率较低的应用一般选择做成网页或小程序的形式,首先是用户一般不会为一个使用频率较低的应用进行下载,其次网页的特点是访问的时候直接向服务器发起数据请求加载页面,不需要提前下载,要不然我访问一个网页我就得先下载下来多麻烦,这个时候就用到了解释器,当用户发起数据请求的时候直接将源码解释成对应得功能然后展现给用户使用

以上就是我对解释器,编译器与预编译器之间的关系得理解,如有错误,还请指出,谢谢观看,再见

编译器,解释器,预编译器之间的关系相关推荐

  1. 【面试总结系列】CSS 预编译器 Sass、Less、Stylus 三者之间的比较详解

    想要查看关于 CSS 的相关面试题,请移步至 面试题 - CSS 篇 查看,其他内容面试题请移步至 2021 最新最全的前端面试题集锦 查看. CSS-当前主流的三种预编译器 什么是预编译器: CSS ...

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

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

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

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

  4. 在线C语言编译器/解释器

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在线C语 ...

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

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

  6. php c语言在线编译器,在线C语言编译器/解释器

    本文介绍两个C语言在线解释器/编译器,这些工具可以提高代码片段检测方便的工作效率,并可以保证这些代码的正确性,而且还可以和别人一起编辑/分享之间的代码,这样可以共同分析代码并相互协助完成代码段的检查. ...

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

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

  8. 儿子和女儿——解释器和编译器的区别与联系

    https://www.cnblogs.com/sword03/archive/2010/06/27/1766147.html 菜鸟经常将编译器和解释器弄混淆,无奈之下,于是向高手请教. 高手说: & ...

  9. JVM解释器和编译器

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

最新文章

  1. npm : 无法加载文件 D:\...\nodejs\npm.ps1,因为在此系统上禁止运行脚本
  2. iPhone手机获取uuid 安装测试app
  3. 干货|为什么Kafka不支持读写分离
  4. android高度混淆,android – TextView与ImageSpan混淆行高
  5. 机器学习- 吴恩达Andrew Ng 编程作业技巧 for Week5 Neural Networks Learning
  6. Linux 中 ext、ext2、ext3、ext4 文件系统介绍与区别
  7. Linux之忘记密码解决方案
  8. Java密码学原型算法实现——第三部分:双线性对
  9. .NET BackgroundWorker
  10. 教你用快捷键 以管理员身份运行cmd
  11. python learning note
  12. 图片上传之blob对象预览
  13. element-ui下载到本地方法(python 或java)
  14. AutoCAD的下载与安装
  15. 小红书商品详情API接口(商品详情页面数据接口)
  16. python编写科学计算器_Python实现计算器
  17. 常用的BAPI 函数
  18. 无需下载 网页版 Matlab
  19. SpringBoot 监控
  20. PADS的layout单个元器件删除时提示“复用元素无法修改,首先打散复用模块”

热门文章

  1. 【小游戏】Flappy bird
  2. 主流Web架构相互比较
  3. 电路原理仿真测试软件,测试工具篇-运放测试电路仿真《TINA-TI》
  4. 某软件测试大纲,软件测试(验收)大纲
  5. console用法java_Java Console printf(String, Object)用法及代码示例
  6. 【iOS15更新必学】 如何完整备份iPhone资料?
  7. c盘满了但是d盘有空间如何扩容-windows
  8. 聊聊Kafka中值得我们学习的优秀设计
  9. Java代码导出数据库百万数据生成sql脚本
  10. Python之路(第二十三篇) 面向对象初级:静态属性、静态方法、类方法