编译程序和解释程序的本质
定义:
首先我们知道,计算机并不能识别高级语言编写的程序,只能将其翻译为机器语言后才能执行,而翻译的过程分为两种,编译方式和解释方式。
编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。
解释方式是指源程序进入计算机后,解释程序边扫描边解释,逐句输入逐句翻译,计算机一句句执行,并不产生目标程序。
区别:
翻译过程上的区别很明显,那么问题来了,为什么要分为这两种翻译方式呢?我们知道编译方式生成目标代码,也就是处理堆栈,处理器,总线的指令,交由计算机完成,而解释方式是需要执行时临时编译运行,执行时多了编译的过程,效率自然要比编译方式慢。(当然有个特殊,比如Java,javac命令编译的结果虽然也是二进制文件,但是并不是机器指令码,而是优化后的代码,最后的执行时通过Java虚拟机再次编译执行,因此效率介于编译方式和解释方式之间)而且解释方式依赖于开发环境,不能直接在操作系统下运行。
既然编译方式比解释方式效率高,那么为什么还会有解释方式的市场呢?首先它不用生成目标程序,一次占用空间小,而且扫描一句执行一句,非常适用于人通过终端设备与计算机会话,如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。这的确是很方便的,很适合于一些小型机的计算问题。
编译程序和解释程序的本质相关推荐
- 编译程序和解释程序有哪些区别?
编译程序,解释程序,汇编程序是3种语言处理程序.其区别主要为: 汇编程序(为低级服务)是将汇编语言书写的源程序翻译成由机器指令和其他信息组成的目标程序. 解释程序(为高级服务)直接执行源程序或源程序的 ...
- 编译程序和解释程序有什么区别?
1. 编译程序和解释程序的区别: 编译型是使用编译器编译后生成计算机硬件可直接执行的指令,解释型是在运行时才由解释器逐语句去执行. 编译型代表:C&C++,C#,Java,解释型代表:html ...
- 编译程序与解释程序区别
目录 前言 一.编译程序定义 二.解释程序定义 总结 前言 举例: A想去外国看演出,但是他不会英文,只能花钱去请翻译. B给出了两种解决办法: 1.购买一本已经翻译完成的英语书,可以直接借用这本书进 ...
- 编译程序、解释程序、汇编程序和编译、解释的概念
计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过"翻译程序"翻译成机器语言形式的目标程序,计算机才能识别和执行.这种"翻译"通常有 ...
- 编译程序和解释程序的区别
编译程序和解释程序的区别 1.解释程序是高级语言翻译程序的一种,它将源语言书写的源程序作为输入,解释一句就提交给计算机执行一句,并不形成目标程序. 2.编译程序把高级语言源程序作为输入,进行翻译转换, ...
- 源程序、目标程序、汇编程序、编译程序、解释程序
源程序.目标程序.汇编程序.编译程序.解释程序之间的关系 翻译程序是这样一种程序:它能把用甲种语言编写的程序翻译成在功能上与之等价的用乙种语言编写的程序.我们把甲种语言称为源语言,把乙种语言称为目标语 ...
- 翻译程序、汇编程序、编译程序、解释程序的区别与联系
翻译程序.汇编程序.编译程序.解释程序的区别与联系 先总结一下:翻译就是包括编译与解释,翻译功能就是把程序转化为同等的更低级语言:编译跟解释作用的对象就是高级语言,汇编操作对应的是汇编语言,作用是汇编 ...
- 编译程序与解释程序的区别
高级程序设计语言主要可以分为两类:编译执行的语言和解释执行的语言,对应的程序即为编译程序和解释程序,那么这两个之间的区别是什么呢? 根本区别 编译程序和解释程序的根本区别在于是否产生低级语言形式的目标 ...
- 高级语言?编译程序?解释程序?目标代码?
编译程序?解释程序? 编译程序解释程序啥作用?将高级语言翻译成可以目标代码,使得目标代码可以在机器上运行 高级语言? 作为一门高级语言,javascript肯定不能是在电脑上直接运行的,肯定有java ...
最新文章
- 火遍全国的网络热梗“yyds”,创造者被判刑3年
- CNN模型 int8量化实现方式(二)
- [小功能]按阅读数、评论数、评论时间查看首页随笔
- CodeForces - 1451E2 Bitwise Queries (Hard Version)(交互+构造+位运算)
- C/C+语言struct深层探索
- java final char_java基本数据类型总结 类型转换 final关键字的用法
- 行为型设计模式(3)—— 命令模式(Command Pattern)
- linux安装jdk8和tomcat8
- Sqlite锁与事务
- js html 测反应速度游戏,利用JS测试目标网站的打开响应速度
- codeforces水题100道 第九题 Codeforces Beta Round #63 (Div. 2) Young Physicist (math)
- 微信-生成小程二维码
- steam游戏上架流程四:Steamworks SDK 的API 方法回调方式 ( Callback )
- errorMessage‘: ‘很遗憾没有抢到,再接再厉哦。‘, ‘orderId‘: 0, ‘resultCode‘:
- http(s)代理服务器与搭建
- 如何批量修改word文件名称?
- 连上wifi设置里显示未连接服务器,连上wifi没网如何解决_为什么连接到wifi却上不了网-win7之家...
- android 写入文件失败,Android:写入失败:EPIPE(Broken pipe)写入文件时出错
- 【JavaEE】Java 线程的几种状态
- 不要相信垃圾的Dell,Dell只是个传说