解释程序是一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但在运行用户程序时,它直接执行源程序或源程序的内部形式(中间代码)。通用解释程序是指能运行在多种平台的解释程序或能对多种高级语言源程序的语句进行边解释边执行处理的系统程序。因此,通用解释程序也可以称作可移植解释程序。前者如Java语言的解释程序可以在不同平台上运行。对于通用解释程序来说,排错能力的大小是评价其性能重要标志之一。
解释程序按照源程序语句的动态执行顺序,逐句地进行解释而后立即执行的翻译程序。解释程序主要包含词法分析、总控程序和一组各种类型语句的执行子程序,由总控程序来控制其执行。总控程序完成语句的语法检查、判别不同的语句,转相应的执行子程序等任务。语法有错时输出错误信息。执行子程序按语句的语义执行相应的动作。解释程序不产生目标程序。通常,它比编译程序花费的机器时间较多,但存储空间占用较少。解释程序的一般结构可以分为解释模块和运行模块两个主要模块。前者的职能是按源程序动态执行顺序逐个输入语句,并对单个语句进行分析和解释,包括语法和语义的正确性检验、生成等价的中间代码或机器语言代码,以及错误信息提供等处理。后者的职能是运行语句的翻译代码,并输出中间结果或最终结果。由于解释程序的设计思想不同,运行模块的执行方式也不同。一种方法是解释模块直接生成源程序语句等价的机器语言代码;通常一个语句生成多条机器指令的代码段。运行模块负责控制这段代码的执行并处理中间结果(保存或输出)。另一种方法是,解释模块生成语句等价的中间代码(但不是机器语言代码),如程序调用及其参数形式。运行模块负责选择相应功能部分并控制中间代码的执行,并处理相关运行结果1。
解释程序的优点:结构简单,易于实现,能方便地进行程序调度和修改,可进行人机对话,适于交互式会话方式下的程序编制和执行等。其缺点是:执行效率低,例如重复执行的语句,采用解释程序执行时,这些语句的每次动态执行都要解释,而使用编译程序只须翻译一次;此外,高级程序设计语言中的某些结构以及优化措施也是解释程序难以实现的。解释程序主要用于:①交互式语言,比较常见的有BASIC、APL以及各种命令式语言。②作程序调试用。程序设计语言可同时配置两个翻译程序:解释程序和编译程序。利用前者的特点进行程序调试和修改,编译程序则在实际运行中使用。③有些语言中的大多数语句(如字符串加工语言中的字符串查找语句和加工语句),其执行时间要比翻译时间长得多,此时采用解释程序比较合适。
Java解释程序Java解释程序是用于解释Java程序语句的翻译程序Java是以种简捷的、面向对象的、用于网络环境的程序设计语言。Java 语言的基本特征是:简捷易学、面向对象、适用于网络分布环境、 解释执行和多线程、 具有一定的安全健壮性。其基本解释程序和对于类的支持只有40 kB 左右,加上标准类库和线程支持也只有215 kB左右,因此系统开销较小,适用于小型的信息处理和信息环境。它由于能够实现自动废区收集,因此也简化了程序设计的内存管理工作。Java解释程序建立Java虚拟机之上,能在多种不同的平台上运行具有较好的通用性。
排错能力与可移植性一个程序特别是中、大规模的程序难免没有错误。发现并排除源程序中的错误是语言处理系统的任务之一。通常源程序的语法错误和静态语义错误都是由编译程序或解释程序来发现的,解释程序这种能力一般称为排错能力,即查找语法和语义错误的能力。通常要借助于在语言中加入某些排错设施如跟踪、截断来发现和排除。
可移植性是软件质量要素之一。良好的可移植性可以延长软件的生命周期,拓展软件的应用环境,因而成为理论界和工程领域共同关注的研究方向。关于软件可移植性的研究工作主要是在程序设计语言、编译器、操作系统和计算机体系结构等不同层面上探讨可移植性设计与实现的策略。广义的可移植性涉及软件在规定环境下的安装、运行及与相关标准的匹配等不同方面,可分解为适应性、易安装性、兼容性和可(易)替换性。适应性是指软件能否适应不同的目标环境。易安装性是指在规定环境下安装软件的难易程度。兼容性是指软件是否符合与可移植性相关的标准或约定。可(易)替换性是指软件能否在规定环境下替换其它软件以及替换的难易程度。狭义的可移植性即指软件对目标环境的适应性,可分解为两个层次:源代码级和可执行代码级。前者要求软件源代码在目标环境下重新编译而后者则是在目标环境下直接运行软件的可执行代码2。
本词条内容贡献者为:
王慧维 - 副研究员 - 西南大学