【软考5】解释型 or 编译型
导读:在上篇博客中,我们了解到,目前的编码语言经过不断的发展,已经经历了机器语言——汇编语言——高级语言的过程。虽然我们的编码语言在不停的升级,但作为计算机来说,它始终是一个只能理解0和1构成的机器语言的,那么,高级语言怎样才能让计算机理解呢?这里,就出现了解释和编译的概念。
一、概述
由于计算机只能理解0和1,那么高级程序设计语言在执行的时候,则需要对其进行翻译。担负这一任务的程序称为“语言处理程序”。语言之间的翻译形式多种多样,基本方式为:汇编、解释、编译。
理解几个基本概念:
1.1,源程序
源程序:用某种高级语言或汇编语言编写的程序称为源程序,源程序不能直接在计算机上执行。如果源程序是用汇编语言编写的,则需要一个汇编程序将其翻译成目标程序后才能执行。如果源程序是用某种高级语言编写的,则需要对应的解释程序或编译程序对其进行翻译,然后在机器上运行。
1.2,解释程序
解释程序:也称为解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行
1.3,编译程序
编译程序:也称为编译器,是将源程序翻译成目标语言程序,然后在计算机上运行目标程序。
1.4,汇编程序
汇编程序:将用汇编语言编写的源程序翻译成机器指令程序。其基本工作包括将每一条可执行汇编语句转换成对应的机器指令,处理源程序中出现的伪指令。
二、具体定义
2.1,解释型
相对于编译型语言存在的,源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。比如Python/JavaScript / Perl /Shell等都是解释型语言。
解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执 行一次都要翻译一次。因此效率比较低。比如Basic语言,专门有一个解释器能够直接执行Basic程 序,每个语句都是执行的时候才翻译。(在运行程序的时候才翻译,专门有一个解释器去进行翻译,每个语句都是执行的时候才翻译。效率比较低,依赖解释器,跨 平台性好.)
2.2,编译型
运行编译型语言是相对于解释型语言存在的,编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码(二进制)。像C/C++等都是编译型语言。
编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等.
3.2,汇编型
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。
三、区别和联系
3.1,联系
不管是汇编、解释 或者是编译,这些都是将高级语言翻译成机器语言的一种 方式,他们最终的目的和本质是相同 的,只是过程和形式不一样。
3.2,区别
解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执 行一次都要翻译一次。因此效率比较低。比如Basic语言,专门有一个解释器能够直接执行Basic程 序,每个语句都是执行的时候才翻译。在运行程序的时候才翻译,专门有一个解释器去进行翻译,每个语句都是执行的时候才翻译。效率比较低,依赖解释器,跨 平台性好。
编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等。
汇编型语言:从严格意义上来说,在我看来,汇编作为一种符号语言,还算不上是一种高级语言。但如果从机器是否理解的角度来区分高级语言,那么汇编也可以算是一种高级语言。汇编源程序,必须经过两次扫描转换为目标程序。其执行运行过程为:(1) 用编辑程序(EDIT)建立ASM源文件;(2) 用MASM程序把ASM文件(即汇编语言程序)转换成OBJ文件;(3) 用LINK程序把OBJ文件转换成EXE文件;(
4) 用调试程序DEBUG调试EXE文件;(5) 在DOS命令行下直接键入EXE文件名就可以执行。汇编型语言是面向机器进行编码,其运行效率是非常高的。但每一种处理器都有不同的汇编语法和编译器,所以汇编型语言的可移植性很差。
四、学习感受
对于解释型或者编译型的学习,目前也只能是从宏观上去了解它,尤其是汇编这一块,现在对于我来说,去搞懂其汇编过程还是比较困难的。但从学习这个也可以看出,语言向着高级发展,但在实际执行的过程中,却又翻译成最原始的机器语言,所以,大概是越高级的语言,其程序效率越低吧。语言的发展向着用户理解,那么将来需要解决的问题大概是:怎样平衡高效的用户理解和高效的机器理解!
【软考5】解释型 or 编译型的更多相关文章
- 解释型vs编译型 动态vs静态 强类型vs弱类型
------------------------------------------------------------ 释型.动态语言与静态语言.强类型语言与弱类型语言的区别 编译型和解释型 我们先 ...
- 编译型 解释型 C++工作原理
C++教程_w3cschool https://www.w3cschool.cn/cpp/ C++工作原理: C++语言的程序因为要体现高性能,所以都是编译型的.但其开发环境,为了方便测试,将调试环境 ...
- python预科前三天:计算器知识、Python下载和安装、Pycharm下载安装激活设置、解释型和编译型、git、思维导图、显示隐藏文件、隐藏已知文件扩展名、创建组织、创建项目、提交作业、排BUG技巧
1.计算机组成结构:CPU.硬盘.内存.输入输出设备.主板.电源. 2.硬件之间的协作关系:是CPU运算完后给操作系统.专业术语叫指令. 3.键盘输入a之后发生的事情:键盘-CPU-操作系统-显卡-显 ...
- Fluent UDF【8】:编译型UDF
UDF除了可以以解释的方式外,其还可以以编译的方式被Fluent加载.解释型UDF只能使用部分C语言功能,而编译型UDF则可以全面使用C语言的所有功能. 1 编译型UDF介绍 编译型UDF的构建方式与 ...
- Python基础教程(002)--编译型语音和解释器
前言 理解解释器和编译型语言,及跨平台 解释器(科普) 计算机不能直接理解任何出机器语言以外的机器语言,必须要把程序员写的程序语言进行翻译,就是编辑. 将其他语音翻译成机器语言,被称为编译器. 编译器 ...
- in C#,编译型常量(const)和运行时常量(readonly)
readonly 关键字与 const 关键字不同. const 字段只能在该字段的声明中初始化. readonly 字段可以在声明或构造函数中初始化. 因此,根据所使用的构造函数, readonly ...
- UWP: 掌握编译型绑定 x:Bind
在 UWP 开发中,我们在进行数据绑定时,除了可以使用传统的绑定 Binding,也可以使用全新的 x:Bind,由于后者是在程序编译时进行初始化操作(不同于 Binding,它是在运行时创建.初始化 ...
- 为什么golang的开发效率高(编译型的强类型语言、工程角度高、在开发上的高效率主要来自于后发优势,编译快、避免趁编译时间找产品妹妹搭讪,既是强类型语言又有gc,只要通过编译,非业务毛病就很少了)
作者:阿猫链接:https://www.zhihu.com/question/21098952/answer/21813840来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- 范型方法 & 范型参数 & 范型返回值
Java范型类 public class FanXingClassTest { public static void main(String args[]){ Test<Integer> ...
随机推荐
- P1809 过河问题_NOI导刊2011提高(01)
题目描述 有一个大晴天,Oliver与同学们一共N人出游,他们走到一条河的东岸边,想要过河到西岸.而东岸边有一条小船. 船太小了,一次只能乘坐两人.每个人都有一个渡河时间T,船划到对岸的时间等于船上渡 ...
- JavaScript之执行环境及作用域
执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为.每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中.我们编写的代码是无法访问这个对象的,但解 ...
- 谈谈我理解的Http缓存机制
前几天看到老铁们分享的面经,谈到 http 缓存机制的问题,痛下决心,一口气研究个明白,分享给大家. 前端的发展越来越迅速,能做的事情越来越多,承担的责任越来越重,通过了解 http 缓存机制,可以帮 ...
- THML5新增功能
HTML5新增功能 1.语义化标记: 1)article:article标签装载显示一个独立的文章内容.例如一篇完整的论坛帖子,一则网站新闻,一篇博客文章等等,一个用户评论等等 artilce可以嵌套 ...
- MFC程序添加快捷键
[问题提出] 有的程序需要自定义组合键完成一定功能,如何实现? [解决方法] RegisterHotKey函数原型及说明: BOOL RegisterHotKey( H ...
- Windows系统下如何优化Android Studio
Android Studio将是Android开发大势所趋. 安装Android Studio时需注意的细节: · 找到安装目录bin目录下idea.properties 最后一行加入: dis ...
- 霍金的新语音系统 ACAT 将开源
英国理论物理学家斯蒂芬·霍金(Stephen Hawking)使用了二十年的语音通讯系统被英特尔开发的新一代通讯平台替代,显著改进了通讯效率.但霍金的声音并没有发生改变,他仍然使用相同的语音合成器.霍 ...
- CAD交互绘制圆形批注(网页版)
js中实现代码说明: 动态拖放时的绘制事件: function DoDynWorldDrawFun(dX,dY,pWorldDraw,pData) { //自定义实体的GUID标识符 var sGui ...
- 安装VC++6.0实验环境
安装VC++6.0步骤:(1)下载一个压缩包进行解压(2)点击打开解压后的文件(3)找到文件里的程序进行安装(4)等待安装完成该程序后可以试着运行一下此程序,在此我们需要了解编写程序的步骤和注意事项. ...
- 学习C语言库函数
使用C语言功能强大的函数,我们需要包含头文件 #include<math.h>. 1)取两个数的较大值或较小值函数: double a = 9.9; double b = 6.6; pri ...