解释器,是一种电脑程式,能够把高级程式语言一行一行解释运行。网路命令解释器是指能够程式单独地解释一行一行网路命令并立刻运行。网路命令解释器的优点是消除了编译整个程式的负担,程式可以拆分成多个部分来模组化,能通过单行网路命令快速找到网路故障。
基本介绍
- 中文名:网路命令解释器
- 外文名:network command interpreter
- 学科:计算机
- 定义:解释网路命令并运行
- 有关术语:解释器
- 特点:能快速诊断和检查网路
简介
在计算机网路工程中存在很多的检测网路命令,这些命令一般都是单独运行的。网路命令解释器是指对网路命令进行解释并运行的程式,网路解释器的特点是能对单个网路命令进行解释并立即运行,而不要编译整个程式,这有利于通过单个网路命令快速诊断和检查网路情况,因为解释的行为会比编译再运行来得快。
网路命令
在计算机网路工程中的网路命令较多,比如,Ping命令、Tracert命令、还有诸如Netstat命令、Arp 命令等其它网路命令,其原理大致相同,只是套用了不同的命令,所使用的方法各有差异;另一方面,在计算机网路工程之中,网路命令,是保障其网路性能及网路安全的重要途径。网路命令的优点是一旦计算机网路性能降低甚至出现故障,原先设定的命令就会发出信号,让用户及时发现网路安全问题。在具体操作过程中,根据预设设定系统运行的Ping 命令分成四个 ICMP 回送请求,每种请求含有 32 位元组数据,一般情况下可以收到 4 个回送应答。在回送请求与回送应答这段时间内,Ping 命令可以进行计量,甚至精确到毫米。在网路命令的指导下检测安全问题,有时不只需要一个命令,这些命令的正常运行就代表着计算机安全性能的可靠性,而如果非正常运行,就代表计算机出现故障,需要及时处理。Ping网路命令是一种可在测试网路中较好套用的网际网路搜寻器,其主要作用是传送来自 ICMP 发出的请求信息包,从而实现对网路连线速度、网路是否正常连线的一种快速网路命令。Ping 网路命令的工作原理主要是所有计算机所拥有的 IP 都是确定的,所以,可根据 IP 地址的不同,管理员发出不同的 Ping网路数据包,发出这个数据包之后,目标计算机就会给出一个对应的数据包,这些数据包对于固定的电脑而言其是固定的。所以,目标计算机就会被网路管理员确定为是否存在,并实现对目标计算机系统的準确判断。同时,网路管理人员,可以向目标主机或者目标路由器发出 Ping网路命令,路由器与目标主机均会给出对应的回响,实现对计算机网路是否正常进行针对性检测,对网路功能实现分析,对故障实现诊断。
解释器运行方法
解释器运行程式的方法有:
直接运行高级程式语言(如Shell内置的解释器)
转换高级程式语言码到一些有效率的位元组码(Bytecode),并运行这些位元组码
以解释器包含的编译器对高级语言编译,并指示处理器运行编译后的程式(例如:JIT)
Perl,Python,MATLAB,与Ruby是属于第二种方法,而UCSD Pascal则是属于第三种方式。在翻译的过程中,这组高级语言所写成的程式仍然维持在原始码的格式(或某种中继语言的格式),而程式本身所指涉的动作或行为则由解释器来表现。
使用解释器来运行程式会比直接运行编译过的机器码来得慢,但是相对的这个解释的行为会比编译再运行来得快。这在程式开发的雏型化阶段和只是撰写试验性的代码时尤其来得重要,因为这个“编辑-解释-除错”的循环通常比“编辑-编译-运行-除错”的循环来得省时许多。在解释器上运行程式比直接运行编译过的代码来得慢,是因为解释器每次都必须去分析并翻译它所运行到的程式行,而编译过的程式就只是直接运行。这个在运行时的分析被称为"解释式的成本"。在解释器中,变数的访问也是比较慢的,因为每次要访问变数的时候它都必须找出该变数实际存储的位置,而不像编译过的程式在编译的时候就决定好了变数的位置了。在使用解释器来达到较快的开发速度和使用编译器来达到较快的运行进度之间是有许多妥协的。有些系统(例如有一些LISP)允许解释和编译的代码互相调用并共享变数。这意味着一旦一个子程式在解释器中被测试并除错过之后,它就可以被编译以获得较快的运行进度。许多解释器并不像其名称所说的那样运行原始代码,反而是把原始代码转换成更压缩的内部格式。举例来说,有些BASIC的解释器会把保留字取代成可以用来在转移表中找出相对应指令的单一位元组符号。解释器也可以使用如同编译器一般的文字分析器和语法分析器然后再翻译产生出来的抽象语法树。
可携性佳,解释式程式相较于编译式程式有较佳的可携性,可以容易的在不同软硬体平台上运行。而编译式程式经过编译后的程式则只限定于运行在开发环境平台。
Small BASIC解释器包括两个主要的子系统:一个是表达式解析器,负责处理数字表达式;另一个是解释器,负责程式的实际执行。对于前者,可採用本书第二章所介绍的表达式解析器。但是在这里做了某些改进,使得解析器能够解析包含在程式语句中的数字表达式,而不是只能解析孤立的表达式。
解释器子系统和解析器子系统包含在同一个解释器类中,该类名为SBasic。儘管从理论上讲可以使用两个独立的类:一个包含解释器,另一个包含表达式解析器;但是将两者用同一个类来实现的代效率会更高,因为表达式解析器和解释器的代码是密不可分的。例如,两个子系统都操作保存着程式代码的同一个字元数组。如果将它们分别安排在两个类中,将会增加可观的额外开销,并导致性能上的损失和功能上的重複。此外,由于程式解释的任务繁重,而解析表达式只是其中的一部分,因此将整个解释机制包含在单个类中是很有意义的。
解释器执行时,每次从程式的原始码中读入一个标识符。如果读入的是关键字,解释器就按照该关键字的要求执行规定的操作。举例来说,当解释器读入一个PRINT后,它将列印PRINT之后的字元;当读入一个GOSUB时,它就执行指定的子程式。在到达程式的结尾之前,这个过程将反覆进行。可以看到,解释器只是简单地执行程式指定的动作。