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