【发布时间】:2016-03-18 12:37:41
【问题描述】:
解释器的结果是什么?会不会把高级语言变成汇编语言或者机器语言,也就是二进制代码?
如果是后者,这是否意味着解释语言与引言集没有关系?
一种语言只能有一个解释器?是不是因为解释器没有做任何优化,所以我们不需要找更好的解释器?
【问题讨论】:
标签: compiler-construction interpreter
解释器的结果是什么?会不会把高级语言变成汇编语言或者机器语言,也就是二进制代码?
如果是后者,这是否意味着解释语言与引言集没有关系?
一种语言只能有一个解释器?是不是因为解释器没有做任何优化,所以我们不需要找更好的解释器?
【问题讨论】:
标签: compiler-construction interpreter
解释器的结果是什么?
解释器的结果是解释程序的结果。所以如果你有程序print "hello",运行解释器的结果就是“hello”被打印到屏幕上。
这就是解释器与编译器的区别,编译器的结果将是一个可执行文件,并且只有在运行该文件时,“hello”才会打印到屏幕上。
会不会把高级语言变成汇编语言或者机器语言,也就是二进制代码?
它可能(如果您对“解释器”的定义包括 JIT 编译器),但通常解释器只产生中间字节码,然后解释它而不产生汇编或机器码。而且基本解释器可能不会生成任何类型的代码,而只是直接执行源代码。
如果是后者,这是否意味着解释语言与引言集没有关系?
(我假设您的意思是指令集)。
如果解释器生成汇编代码或机器代码,它必须关心运行它的 CPU 的指令集。如果没有,就不会。
一种语言只能有一个解释器?
不,同一种语言可以有许多不同的解释器和编译器,只要人们愿意编写。一种语言有多个解释器并不罕见。
是不是因为解释器没有做任何优化,所以我们不需要寻找更好的解释器?
没有。解释器可以并且确实执行优化,但通常比编译器执行的要少,因为由于没有单独的编译步骤,任何花费在优化上的时间都会增加程序的启动时间。
【讨论】: