Programming languages 程序设计语言实现

Programming languages 程序设计语言实现,programming-languages,Programming Languages,在我的课堂讲稿中,“语言实现系统”被解释为: 一个语言实现系统提供了一个在 机器指令的高级语言 经过维基百科给我的搜索 编程语言实现是一个用于执行 计算机程序 但我很难理解这个概念。它是在谈论类似JVM(Java虚拟机)的东西吗 有人能用更简单的话给我解释一下吗 我来试一试 编程语言实现(Programming Language Implementation)描述了如何将代码(如Java)作为示例转换为机器(处理器等)理解的语言的方法。我们称之为机器代码 这有两种主要形式,汇编和解释 从技术上讲

在我的课堂讲稿中,“语言实现系统”被解释为:

一个语言实现系统提供了一个在 机器指令的高级语言

经过维基百科给我的搜索

编程语言实现是一个用于执行 计算机程序

但我很难理解这个概念。它是在谈论类似JVM(Java虚拟机)的东西吗

有人能用更简单的话给我解释一下吗

我来试一试

编程语言实现(Programming Language Implementation)描述了如何将代码(如Java)作为示例转换为机器(处理器等)理解的语言的方法。我们称之为机器代码

这有两种主要形式,汇编解释

从技术上讲,正如维基百科页面所指出的,编译就是将一种编程语言转换成另一种(通常是较低级别的)。传统上,这指的是将多个输入文件组合成一个可在目标系统上运行的文件

解释的语言中,当程序在您的机器上运行时,程序会逐段转换

您提到了Java虚拟机,所以我将以它为例。在JVM中,使用
javac
将Java代码编译成Java字节码。然后,Java虚拟机对该字节码进行解释,并在底层硬件上运行。这就是
java
命令的作用。虽然Java可以被描述为一种编译和解释语言,但将Java本身看作是一种编译语言,将Java字节码看作是一种解释语言可能更容易

与其他语言相比,C语言和C++语言通常是直接编译成目标硬件平台的机器代码。
除此之外,正如@kostix在评论中指出的,还有传输,或源代码到源代码的编译。Transpiling指的是将一种更高级的语言转换成另一种更高级的语言。一个常见的例子是将JavaScript ES6转换为JavaScript ES5以实现向后兼容性,或者C++到JavaScript

中,我将最后一个句子重写为“……通常转换(编译)到目标硬件平台的机器代码”。当我们谈论将一个用高级PL编写的程序转换成一些低级的东西,比如机器代码时,它本身就有点毫无意义。这是因为这个词的起源是源于编译器能够将来自多个输入(通常是文件)的代码组合成一个可在目标系统上运行的程序,现在有一个术语“转储”,它主要用于描述程序从一种高级语言到另一种高级语言的转换,例如C++到JavaScript。不确定是否有必要提及“编译”一词的起源,除非我遗漏了什么