语言翻译问题

时间:2011-01-27 03:25:56

标签: compiler-construction programming-languages interpreter

我正在读C语言书。 它说,

  某些高杠杆语言不是   已编译但已解释。

     

Basic和Java是两个编程   程序不在其中的语言   解释而不是编译。其他   例子包括Unix系统   shell和Python。

C#和Perl怎么样?

我认为C#应该始终编译,而Perl不会总是编译。

是吗?

1 个答案:

答案 0 :(得分:3)

C#和Java都是编译的,但不是本机代码。它们被编译为字节码(分别用于公共语言运行时和Java虚拟机),由其VM进行解释。

实际上,可以编译Perl,因为有一个命令行选项可以从Perl生成C代码并编译它。但更一般地说,Perl被解释了。

Perl和Python在正常运行时都被编译为字节码,然后由各自的解释器解释。运行之前没有必要的编译,这与Java和C#不同。

根据您的C书的定义,只有将语言编译为直接在CPU上运行且没有运行时的本机代码(例如程序集)时才编译语言。