编译器 vs 解释器

编译器 vs 解释器

[外链图片转存失败(img-R6AtdrWN-1564405309064)(https://www.guru99.com/images/1/053018_0616_CompilervsI1.png)]

Compiler 编译器Interpreter 解释器
功能整个程序进行分析,执行输出为另一种代码(一般为机器码,如目标代码,可能需要连接后才能执行),但是不执行该机器码源代码逐行执行,即包含分析和执行两步
编程步骤1、创建程序。
2、【编译】解析或分析所有代码的正确性。如果不正确,则抛出错误如果没有错误,编译器会将源代码转换为机器代码
3、它将不同的代码文件链接到一个可运行的程序(如 .exe)
4、 运行程序
1、创建程序
2、逐行执行源语句
执行速度每次执行的是可运行程序(如 .exe),执行速度较每次执行都从源代码开始,且不保存执行过程中的机器代码,执行速度慢
执行者权限执行者一般得到的是可执行文件,无法对源代码进行操作,执行者无法对程序进行更改执行者可以对源程序进行更改
程序运行对象CPU解释器
适用环境.exe 限定特定CPU一份源代码只要有对应版本解释器即可运行
对于web环境,由于代码往往是一部分一部分加载,因此无需对整个程序进行分析,采用逐行编译运行的解释型语言更适合
代码优化对整个代码进行复杂地分析优化,耗时较长,优化效果较好逐行查看,分析和处理耗时较短优化效果较差
有错代码的执行只要有错误,代码就不能执行执行到有错误代码位置
对应语言举例C,C ++,C#,Scala,Java(既需要编译,又需要解释)PHP,Perl,Ruby (一般可以认为,不需要编译器,直接通过解释器执行的语言就是脚本语言

附加注意事项:

  • 解释和编译都只是程序从源码到运行时的一种动作,高级语言运行过程中动作其实很多,有的是编译动作,有的是解释动作,用解释型或者编译型来分类一个语言,不完全合理。
  • 一个完整的编译系统与 一个用C编写的程序hello.c的编译过程:

img


参考文献

https://www.zhihu.com/question/268303059 深入理解两个概念
https://blog.csdn.net/zhu_xun/article/details/16921413 c的执行过程
https://www.guru99.com/difference-compiler-vs-interpreter.html 编译器和解释器的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值