编程语言实现

3
在我的讲义中,“语言实现系统”被解释为:提供一个接口,使高级语言的程序可以转换成机器指令。而维基百科上的解释是:编程语言实现是一种执行计算机程序的系统。但是,我很难理解这个概念。它是在讨论类似于JVM(Java虚拟机)这样的东西吗?请有人用简单的术语来解释一下这个概念。
1个回答

5
我会尝试一下。
编程语言实现描述了您的代码(例如Java)如何转换为机器(处理器等)可以理解的语言的方法。我们将其称为机器码。
这有两种主要形式,编译和解释。
从技术上讲,正如维基百科页面所指出的那样,编译是将一种编程语言转换为另一种编程语言(通常是更低级别的语言)。传统上,这是指将多个输入文件合并成一个在目标系统上可运行的单个文件。
在解释型语言中,程序在运行时逐个部分进行转换。
您提到了Java虚拟机,因此我将以此为例。在JVM中,Java代码使用javac编译成Java字节码。然后,Java虚拟机解释此字节码并在底层硬件上运行。这就是java命令的作用。虽然Java可以被描述为一个编译和解释的语言,但把Java本身看作编译语言,而Java字节码看作解释语言可能更容易些。
相比之下,其他语言如C和C ++通常直接转换(编译)为目标硬件平台的机器码。
除了这些,正如@kostix在评论中指出的那样,还存在着转换,或源到源的编译。转换是指将一种更高级别的语言转换为另一种更高级别的语言。一个常见的例子是将JavaScript ES6转换为JavaScript ES5以实现向后兼容性,或将C ++转换为JavaScript。

我会重新表达最后一句话,使其变为“通常直接转换(编译)成目标硬件平台的机器代码”。 - kostix
我还要注意一点,当我们谈到将用高级编程语言编写的程序转换为低级别的内容(比如机器代码)之后,“编译”这个术语本身有些含糊不清。这是因为该单词的起源在于编译器可以将多个输入(通常是文件)中的代码组合成一个可在目标系统上运行的单个程序。 - kostix
为了让我的意思更加清晰,现在有一个术语叫做“转译”,它主要用于描述将程序从一种高级语言转换为另一种高级语言,比如将C++转换成JavaScript。 - kostix
已添加到答案中。不确定是否有必要提及“编译”一词的起源,除非我漏掉了什么。 - Luke K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接