解释器( 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 . 引论 . 构建一个编译器的相关科学 . 程序设计语言基础 . 一个简单的语法制导翻译器 . 简单表达式的翻译器(源代码示例) . 词法分析 . 生成中间代码 . 词法分析器的实现 ...
随机推荐
- oracle数据处理之exp/imp
oracle 导出/导入数据方法一 exp/imp工具:1 将数据库oracle01完全导出,DBA:sys,密码:123456:用户名Scott 密码123456 导出到D:\emp.dmp中 ex ...
- 吴恩达《深度学习》-课后测验-第一门课 (Neural Networks and Deep Learning)-Week 4 - Key concepts on Deep Neural Networks(第四周 测验 – 深层神经网络)
Week 4 Quiz - Key concepts on Deep Neural Networks(第四周 测验 – 深层神经网络) \1. What is the "cache" ...
- [算法与数据结构]使用Java泛型实现栈
###题解 1 实现内部类node 2 维护top为头节点的链表 3 操作 操作1:push() 操作2: pop() 操作3: isEmpty() ###代码 package Exam; class ...
- CentOS 8 安装 VirtualBox 增强功能
环境介绍 Machine: NUC8i5BEK OS: macOS Catalina 10.15.6 VirtualBox: 6.1.12 r139181 (Qt5.6.3) CentOS: 8.2. ...
- 一种统计ListView滚动距离的方法
注:本文同步发布于微信公众号:stringwu的互联网杂谈 一种统计ListView滚动距离的方法 ListView做为Android中最常使用的列表控件,主要用来显示同一类的数据,如应用列表,商品列 ...
- 中心极限定理(为什么y服从高斯分布)
因为每一条数据都服从IID原则: 根据中心极限定理,当数据增加的时候,样本均值的分布慢慢变成正态分布 不管分布式什么分布,累加起来都是高斯分布 As sum increases, sum of non ...
- Linux中的硬链接和软连接
1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]硬连接指通过索引节点 ...
- CRUD,分页,排序,搜索与AngularJS在MVC
下载source - 53.1 MB 介绍 在选择最新的技术时,有几个因素会起作用,包括这些技术将如何与我们的项目集成.这篇文章解决了开始使用AngularJS和MVC的乞丐的问题.这篇文章告诉使用语 ...
- LR之Oracle 2tier协议录制Oracle脚本
在一次测试中,需用到sql去查询Oracle数据,并去使用改数据时,查阅各种资料终于实现LoadRunner对Oracle数据库进行操作,分享给大家,也与大家共同进步~ 同时也可用Loadrunn ...
- junit调试(No tests found matching )
使用junit调试程序时报错:initializationError(org.junit.runner.manipulation.Filter)java.lang.Exception: No test ...