编译是指将源语言转化为目标计算机的可执行二进制代码,如将C、C++编译为Windows上的可执行2进制文件,这种编译一旦完成,那么就只能在特定平台上运行了,由于程序执行的是编译好的二进制文件,因此速度比较快(相对下面的解释)。
解释是指程序不做任何变动,以源代码的形式提供在目标计算机上执行,但是源生代码计算机是不识别的,因此要边解释边执行,解释一条执行一条,这样的话就比编译要慢了。由于程序要在运行时动态解释语言,因此往往需要特定的平台,例如Java需要目标机器上安装JRE,但是这种方式也有一个好处就是可以跨平台,源代码不变,在运行时根据不同的平台,解释成不同的二进制执行。
翻译方式一般分为编译和解释两种。 编译方式:事先编好的一个叫做编译程序的机器语言程序放在计算机中。当高级语言编的源程序输入计算机时,编译程序就把源程序自动整个地翻译成用机器指令表示的目标程序。 解释方式:事先编好的一个叫做解释程序的机器语言程序放在计算机中,当高级语言源程序输入计算机后,解释程序自动地逐句翻译源程序,译一句执行一句。 可以这么理解,编译的结果是另外一种语言,而解释的就是一种中间语言。
高级语言的语言处理程序分为解释程序和编译程序两种。解释程序处理源程序时,大多数采用______方法。
A.源程序语句被逐个直接解释执行
B.先将源程序转化成某种中间代码,然后对这种代码解释执行
C.先将源程序转化成目标代码,再执行
D.以上方法都不是
算术表达式“(a-b)*(c+d)”的后缀式是()。
A.ab-cd+*
B.abcd-*+
C.ab-*cd+
D.ab-c+d*
参考答案:
A
试题分析:
后缀表达式是从左到右算。把表达式加上括号,((a-b)*(c+d)),再把运算符加到括号外面ab-cd+*。答案为A。
这是编译原理里面的内容,可以参考书本进行学习,有具体不懂的问题可以在这里提。
它的大概概念为:
借用数学中表达式意境,按照语言语法规则要求写成的能够实现计算要求的程序代码。
B.解释器参与运行控制,程序执行的速度慢
C.解释器参与运行控制,程序执行的速度不变
D.解释器不参与运行控制,程序执行的速度快