编译方式与解释方式都是语言处理程序
对编译方式而言,编译和运行是两个相互独立的阶段。
解释方式则不需要将这两个阶段分隔开,比较适用于交互式语言处理环境中。
编译方式与解释方式的根本区别在于是否生成目标代码
编译程序产生机器能识别的汇编或二进制代码。
解释程序则通过分析和执行语句后直接生成运行结果。
编译程序和解释程序的存储组织方式显著不同
对编译程序而言,在源语言程序被编译阶段,存储区中要为源程序(中间形式)和目标代码开辟空间,存放编译程序需要使用的各种各样表格,如符号表;在目标代码运行阶段,存储区中主要是目标代码和数据,编译所用的任何信息都不再需要。
而对解释程序而言,在整个工作过程中,源程序、符号表等内容始终存放在存储区中。
编译程序执行效率比解释程序高
因为解释程序需要逐行进行翻译,循环体需重复翻译;每遇变量,须从头开始检索变量表;若遇转向语句(Goto),需从头开始检索符号表等。
而编译程序不会出现上述三种情况,它是一次性翻译,可多次执行;编译过程中可向用户报告它检测到的一切错误。