版权归原作者所有,如有侵权,请联系我们

[科普中国]-网络命令解释器

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

解释器,是一种计算机程序,能够把高级编程语言一行一行解释运行。网络命令解释器是指能够程序单独地解释一行一行网络命令并立刻运行。网络命令解释器的优点是消除了编译整个程序的负担,程序可以拆分成多个部分来模块化,能通过单行网络命令快速找到网络故障。

简介在计算机网络工程中存在很多的检测网络命令,这些命令一般都是单独运行的。网络命令解释器是指对网络命令进行解释并运行的程序,网络解释器的特点是能对单个网络命令进行解释并立即运行,而不要编译整个程序,这有利于通过单个网络命令快速诊断和检查网络情况,因为解释的行为会比编译再运行来得快。

网络命令在计算机网络工程中的网络命令较多,比如,Ping命令、Tracert命令、还有诸如Netstat命令、Arp 命令等其它网络命令,其原理大致相同,只是应用了不同的命令,所使用的方法各有差异;另一方面,在计算机网络工程之中,网络命令,是保障其网络性能及网络安全的重要途径。网络命令的优点是一旦计算机网络性能降低甚至出现故障,原先设定的命令就会发出信号,让用户及时发现网络安全问题。在具体操作过程中,根据缺省设置系统运行的Ping 命令分成四个 ICMP 回送请求,每种请求含有 32 字节数据,一般情况下可以收到 4 个回送应答。在回送请求与回送应答这段时间内,Ping 命令可以进行计量,甚至精确到毫米。在网络命令的指导下检测安全问题,有时不只需要一个命令,这些命令的正常运行就代表着计算机安全性能的可靠性,而如果非正常运行,就代表计算机出现故障,需要及时处理。Ping网络命令是一种可在测试网络中较好应用的因特网搜索器,其主要作用是发送来自 ICMP 发出的请求信息包,从而实现对网络连接速度、网络是否正常连接的一种快速网络命令。Ping 网络命令的工作原理主要是所有计算机所拥有的 IP 都是确定的,所以,可根据 IP 地址的不同,管理员发出不同的 Ping网络数据包,发出这个数据包之后,目标计算机就会给出一个对应的数据包,这些数据包对于固定的电脑而言其是固定的。所以,目标计算机就会被网络管理员确定为是否存在,并实现对目标计算机系统的准确判断。同时,网络管理人员,可以向目标主机或者目标路由器发出 Ping网络命令,路由器与目标主机均会给出对应的响应,实现对计算机网络是否正常进行针对性检测,对网络功能实现分析,对故障实现诊断1。

解释器运行方法解释器运行程序的方法有:

直接运行高级编程语言(如Shell内置的解释器)

转换高级编程语言码到一些有效率的字节码(Bytecode),并运行这些字节码

以解释器包含的编译器对高级语言编译,并指示处理器运行编译后的程序(例如:JIT)

Perl,Python,MATLAB,与Ruby是属于第二种方法,而UCSD Pascal则是属于第三种方式。在翻译的过程中,这组高级语言所写成的程序仍然维持在源代码的格式(或某种中继语言的格式),而程序本身所指涉的动作或行为则由解释器来表现。

使用解释器来运行程序会比直接运行编译过的机器码来得慢,但是相对的这个解释的行为会比编译再运行来得快。这在程序开发的雏型化阶段和只是撰写试验性的代码时尤其来得重要,因为这个“编辑-解释-除错”的循环通常比“编辑-编译-运行-除错”的循环来得省时许多。在解释器上运行程序比直接运行编译过的代码来得慢,是因为解释器每次都必须去分析并翻译它所运行到的程序行,而编译过的程序就只是直接运行。这个在运行时的分析被称为"解释式的成本"。在解释器中,变量的访问也是比较慢的,因为每次要访问变量的时候它都必须找出该变量实际存储的位置,而不像编译过的程序在编译的时候就决定好了变量的位置了。在使用解释器来达到较快的开发速度和使用编译器来达到较快的运行进度之间是有许多妥协的。有些系统(例如有一些LISP)允许解释和编译的代码互相调用并共享变量。这意味着一旦一个子程序在解释器中被测试并除错过之后,它就可以被编译以获得较快的运行进度。许多解释器并不像其名称所说的那样运行原始代码,反而是把原始代码转换成更压缩的内部格式。举例来说,有些BASIC的解释器会把保留字取代成可以用来在转移表中找出相对应指令的单一字节符号。解释器也可以使用如同编译器一般的文字分析器和语法分析器然后再翻译产生出来的抽象语法树。

可携性佳,解释式程序相较于编译式程序有较佳的可携性,可以容易的在不同软硬件平台上运行。而编译式程序经过编译后的程序则只限定于运行在开发环境平台。

Small BASIC解释器包括两个主要的子系统:一个是表达式解析器,负责处理数字表达式;另一个是解释器,负责程序的实际执行。对于前者,可采用本书第二章所介绍的表达式解析器。但是在这里做了某些改进,使得解析器能够解析包含在程序语句中的数字表达式,而不是只能解析孤立的表达式。

解释器子系统和解析器子系统包含在同一个解释器类中,该类名为SBasic。尽管从理论上讲可以使用两个独立的类:一个包含解释器,另一个包含表达式解析器;但是将两者用同一个类来实现的代效率会更高,因为表达式解析器和解释器的代码是密不可分的。例如,两个子系统都操作保存着程序代码的同一个字符数组。如果将它们分别安排在两个类中,将会增加可观的额外开销,并导致性能上的损失和功能上的重复。此外,由于程序解释的任务繁重,而解析表达式只是其中的一部分,因此将整个解释机制包含在单个类中是很有意义的。

解释器执行时,每次从程序的源代码中读入一个标识符。如果读入的是关键字,解释器就按照该关键字的要求执行规定的操作。举例来说,当解释器读入一个PRINT后,它将打印PRINT之后的字符;当读入一个GOSUB时,它就执行指定的子程序。在到达程序的结尾之前,这个过程将反复进行。可以看到,解释器只是简单地执行程序指定的动作。

本词条内容贡献者为:

宋春霖 - 副教授 - 江南大学