编译与解释的区别

简介: 编译与解释的区别

编译方式与解释方式都是语言处理程序

对编译方式而言,编译和运行是两个相互独立的阶段。

解释方式则不需要将这两个阶段分隔开,比较适用于交互式语言处理环境中。


编译方式与解释方式的根本区别在于是否生成目标代码

编译程序产生机器能识别的汇编或二进制代码。

解释程序则通过分析和执行语句后直接生成运行结果。


编译程序和解释程序的存储组织方式显著不同

对编译程序而言,在源语言程序被编译阶段,存储区中要为源程序(中间形式)和目标代码开辟空间,存放编译程序需要使用的各种各样表格,如符号表;在目标代码运行阶段,存储区中主要是目标代码和数据,编译所用的任何信息都不再需要。

而对解释程序而言,在整个工作过程中,源程序、符号表等内容始终存放在存储区中。


编译程序执行效率比解释程序高

因为解释程序需要逐行进行翻译,循环体需重复翻译;每遇变量,须从头开始检索变量表;若遇转向语句(Goto),需从头开始检索符号表等。

而编译程序不会出现上述三种情况,它是一次性翻译,可多次执行;编译过程中可向用户报告它检测到的一切错误。

目录
相关文章
|
7月前
|
存储 安全 Java
解释Python中的引用和赋值机制。
Python中,变量是对象引用,不存储数据,而存数据在内存的位置。赋值(=)创建变量并让其指向内存中的对象。当多个变量指向同一对象时,它们共享引用。Python使用引用计数管理对象生命周期,对象引用为0时回收。了解这些机制对优化内存使用和防止内存泄漏很重要。例如: ```markdown ```python a = 5 b = a # b引用了同一数字5 del a # 数字5的引用计数仍为1,未被回收 ``` 引用计数并非唯一机制,Python还采用其他策略处理循环引用等复杂情况。
63 2
|
7月前
|
存储 程序员 编译器
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)(上)
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)
61 0
|
7月前
|
自然语言处理 编译器 Linux
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)(下)
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)
74 0
|
7月前
|
存储 Linux C语言
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)-2
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)
|
7月前
|
自然语言处理 Linux 编译器
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)-1
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)
|
7月前
|
JavaScript 前端开发 Java
静态语言和动态语言,解释和编译
静态语言和动态语言,解释和编译
100 1
|
存储 自然语言处理 编译器
程序编译和链接的过程/预处理符号和用法【C语言】
程序编译和链接的过程/预处理符号和用法【C语言】
80 0
|
IDE Unix 编译器
关于编译的重要概念总结
关于编译的重要概念总结
3396 0
关于编译的重要概念总结
|
NoSQL Java 数据库
解释afterPropertiesSet方法的用处
解释afterPropertiesSet方法的用处