1.9.3 计算机的翻译官

计算机的翻译官

人们借助计算机语言与计算机沟通,其中的“高级语言”应用最广,这种语言不受机器的制约,它面向应用问题,接近人们的使用习惯,当然高级语言与自然语言还是有很大区别的。到目前为止,计算机使用的高级语言已经相当多,早期在DOS操作系统下常用的有BASIC、FORTRAN、PASCAL、COBOL、C等几种高级语言;现在在Windows操作系统下,高级语言进一步发展成为面向对象的高级语言,如Visual BASIC、Visual C等。尽管计算机很聪明,但是它只懂机器语言,不能直接识别高级语言,用高级语言编写的程序必须“翻译”成机器语言程序之后才能被机器接受,在计算机上运行。这样一来,使用高级语言就会使计算机损失大量的时间,但是这是我们有时不得不付出的代价。事实上,各种语言是内行人提供给外行人使用计算机的一种便利工具。这些内行人越高明,所花的劳动越多,计算机的语言智能就越高,外行人使用起来就越方便、省事。

扮演翻译角色的也是一种程序,叫做翻译程序。它的任务是把源语言程序改造成为目标语言程序。如果源语言程序是高级语言,而目标语言是低级语言——汇编语言或是机器语言,那么这样的翻译程序就称为编译程序。

计算机要执行一个高级语言程序一般分两步走,第一步把高级语言的源程序编译成低级语言的目标程序;第二步是运行目标程序。

编译程序的工作是这样的,输入源程序,对它进行加工处理,然后输出目标程序。加工处理并不简单,至少有五个阶段。第一阶段是词法分析,当此重任的程序叫“扫描器”,它对源程序的各个字符串进行扫描和分解。第二阶段是语法分析,由叫做“分析器”的程序来承担,根据语言的语法规则,把扫描器所提供的结果分析成各类语法组。第三阶段是产生中间代码,由“中间代码产生器”程序来完成,按第二阶段识别出的语法组产生相应的中间指令。第四阶段是优化,就是对中间代码进行加工变换,以便使生成的目标程序运行得更快更省内存。第五阶段是目标代码生成,按照优化后的中间代码和其他有关信息生成目标程序。这种目标程序可以在计算机上直接执行,执行这个目标程序就可以得到一个高级语言程序的结果。

在计算机上执行用高级语言编写的源程序,处理像上面所说的编译执行方式之外,还有一种解释执行方式。

解释执行方式与编译执行方式不同,它们的根本区别在于编译执行方式把源程序的执行过程分成编译和运行两大步,而解释方式则不然,它是按照语句中的动态顺序,直接地逐句进行分析解释,并马上执行。不难看出,解释程序是这样一种程序,它能够按照源程序在语句的动态顺序,逐句地分析解释并去执行,直到结束为止。同编译程序一样,解释程序也跟源语言及计算机有关,同一台计算机上应用不同的语言解释程序或编译程序是不同的,同一种语言在不同的计算机上的解释程序或编译程序也是不同的。编译程序和解释程序都属于系统程序。