解释器( interpreter ) 与 编译器( compiler ) 的对比

什么是解释器与编译器
1、解释器
解释器是一种计算机程序,它将每个高级程序语句转换成机器代码。
2、编译器
把高级语言编写的程序转换成机器码,将人可读的代码转换成计算机可读的代码(0和1)。
3、机器语言
一个机器语言程序是由一系列二进制模式组成的(例 110110) 它表示应该由计算机执行的简单操作。机器语言程序是可执行的,所以它们可以直接运行
两者都是将高级语言转换成机器码,解释器在程序运行时将代码转换成机器码,编译器在程序运行之前将代码转换成机器码
两者的区别
| Interpreter(解释器) | compare(编译器) | |
| 程序步骤 | 1、创建代码 2、没有文件链接或机器代码生成 3、源语句在执行过程中逐行执行 | 1、创建代码 2、Compile将解析或分析所有语言语句的正确性。如果不正确,则抛出错误 3、如果没有错误,编译器将把源代码转换为机器码 4、它将不同的代码文件链接到一个可运行的程序(称为exe) 5、运行程序 | 
| Input(输入) | 每次读取一行 | 整个程序 | 
| Output(输出) | 不产生任何的中间代码 | 生成中间目标代码 | 
| 工作机制 | 编译和执行同时进行 | 编译在执行之前完成 | 
| 存储 | 不保存任何机器代码 | 存储编译后的机器代码在机器上 | 
| 执行 | 程序执行是解释过程的一部分,因此是逐行执行的 | 程序执行与编译是分开的,它只在整个输出程序编译后执行 | 
| 生成程序 | 不生成输出程序,所以他们在每次执行过程中都要评估源程序 | 生成可以独立于原始程序运行的输出程序(以exe的形式) | 
| 修改 | 直接修改就可运行 | 如果需要修改代码,则需要修改源代码,重新编译 | 
| 运行速度 | 慢 | 快 | 
| 内存 | 它需要较少的内存,因为它不创建中间对象代码 | 内存需求更多的是由于目标代码的创建 | 
| 错误 | 解释器读取一条语句并显示错误(如果有的话)。你必须纠正错误才能解释下一行 | 编译器在编译时显示所有错误和警告。因此,不修正错误就不能运行程序 | 
| 错误监测 | 容易 | 难 | 
| 编程语言 | PHP, Perl, Python, Ruby | C, C++, C#, Scala,  Java | 
编译器
 
 
解释器
主要区别
总结
 
相关链接
解释器( interpreter ) 与 编译器( compiler ) 的对比的更多相关文章
- python 设计模式之解释器(Interpreter)模式
		#写在前面 关于解释器模式,我在网上转了两三圈,心中有了那么一点概念 ,也不知道自己理解的是对还是错. 其实关于每一种设计模式,我总想找出一个答案,那就是为什么要用这种设计模式, 如果不用会怎么样,会 ... 
- Java虚拟机解释器与JIT编译器
		一.JAVA编译相关概念 1.动态编译(dynamic compilation)指的是“在运行时进行编译”:与之相对的是事前编译(ahead-of-time compilation,简称AOT),也叫 ... 
- 解释器与JIT编译器
		解释器 JVM设计者们的初衷仅仅只是单纯地为了满足Java程序实现跨平台特性,因此避免采用静态编译的方式直接生成本地机器指令,从而诞生了实现解释器在运行时采用逐行解释字节码执行程序的想法. 解释器真正 ... 
- [设计模式]解释器(Interpreter)之大胆向MM示爱吧
		为方便读者,本文已添加至索引: 设计模式 学习笔记索引 写在前面 “我刚写了个小程序,需要你来参与下.”我把MM叫到我的电脑旁,“来把下面这条命令打进去,这是个练习打(Pian)符(ni)号(de)的 ... 
- 计算机语言学习导论[C/C++]
		作者:@幻の上帝 1 前置条件语文其实挺重要,这个没问题,但容易被忽视.当然,如果不是经常要折腾文档,要求不高:但起码要能说清楚话.数学重要,主要是广度,作为快速学习相关领域知识的基础.深度上面可深可 ... 
- Knowledge Point 20180303 对比编译器、解释器与Javac编译原理
		编译器与Javac编译原理 在前文我们知道了Java是一种编译语言和解释语言,它的源代码经过编译器Javac编译为能够被JVM识别的二进制语言,然后JVM将其解释为能够被平台识别的机器语言.那么什么是 ... 
- **解释器全局锁(Global Interpreter Lock)
		解释器全局锁(Global Interpreter Lock),即Python为了保证线程安全而采取的独立线程运行的限制,说白了就是一个核只能在同一时间运行一个线程. [解决办法就是多进程和协程(协程 ... 
- 用VC编译lua源码,生成lua语言的解释器和编译器
		用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ... 
- Compiler Theory(编译原理)、词法/语法/AST/中间代码优化在Webshell检测上的应用
		catalog . 引论 . 构建一个编译器的相关科学 . 程序设计语言基础 . 一个简单的语法制导翻译器 . 简单表达式的翻译器(源代码示例) . 词法分析 . 生成中间代码 . 词法分析器的实现 ... 
随机推荐
- pycharm之ctrl+鼠标滚轮调整字体大小
			按照图示设置,可以添加:ctrl+鼠标滚轮调整字体大小功能 1. 2. 
- 乔悟空-CTF-i春秋-Web-SQLi
			2020.09.05 今天注定是高产的一天,这题真是坑,不看wp真的不会做,现在回头来复习一遍. 做题 题目 题目地址 做题 这题坑人的地方就在于重定向了两次,并且重要信息在第一次里藏着,第二次还给了 ... 
- 分布式系统监视zabbix讲解五之web监控
			Web 监控 概况 你可以使用 Zabbix 检查几个网站可用性方面. 如果要使用 Web 检测功能,必须在 编译Zabbix 的时候加入 cURL(libcurl) 的支持. 要使用 Web 监控, ... 
- Python+Appium实现APP自动化测试
			一.环境准备 1.脚本语言:Python3.x IDE:安装Pycharm 2.安装Java JDK .Android SDK 3.adb环境,path添加E:\Software\Android_SD ... 
- 有向图的基本算法-Java实现
			有向图 有向图同无向图的区别为每条边带有方向,表明从一个顶点至另一个顶点可达.有向图的算法多依赖深度搜索算法. 本文主要介绍有向图的基本算法,涉及图的表示.可达性.检测环.图的遍历.拓扑排序以及强连通 ... 
- 关于bat脚本中的命令状态码相关的%errorlevel%变量
			bat脚本中常用%errorlevel%表达上一条命令的返回值,即命令执行状态码.也称命令退出码 一般上一条命令的执行结果返回的值只有两种,0和非0 (如常见的1,2,4,5,9009等等),0一般会 ... 
- svn的使用学习
			一:安装 1.svn安装包,语言包下载 地址:https://pan.baidu.com/s/1PFM7ya_hNJM-v979KgCpgA 提取码:mpxq 2.运行下载的TortoiseSVN程序 ... 
- 解析形如(k,v)(k,v)(k,v)字符串
			有时根据需要会将map数据格式化成(k,v)(k,v)(k,v)--字符串,之后需要还原,下面代码实现了还原过程 1 void SplitString(const string& s, vec ... 
- redis过期策略以及内存淘汰机制(理论+配置)
			一.redis的过期策略: redis的过期策略是:定期删除+惰性删除redis在存储数据时,可能会设置过期时间,而所谓的定期删除,指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的k ... 
- spring aop 源码分析(二) 代理方法的执行过程分析
			在上一篇aop源码分析时,我们已经分析了一个bean被代理的详细过程,参考:https://www.cnblogs.com/yangxiaohui227/p/13266014.html 本次主要是分析 ... 
