programming-languages - 编程语言实现

标签 programming-languages

在我的讲义中,“语言实现系统”被解释为,

A language implementation system provides an interface fro programs in higher level languages to machine instructions.

经过维基百科的搜索后,

A programming language implementation is a system for executing computer programs.

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

有人可以用更简单的语言向我解释一下吗?

最佳答案

我会尝试一下。

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

有两种主要形式,编译解释

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

解释语言中,程序在您的计算机上运行时会被逐段转换。

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

相比之下,其他语言如C和C++通常直接转换(编译)为目标硬件平台的机器代码。

除此之外,正如 @kostix 在评论中指出的那样,还存在转译,即源到源编译。转译是指将一种高级语言转换为另一种高级语言。一个常见的示例是将 JavaScript ES6 转换为 JavaScript ES5 以实现向后兼容性,或将 C++ 转换为 JavaScript

关于programming-languages - 编程语言实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47285351/

相关文章:

php - 可用于编程的最有值(value)的认证是什么?

javascript - 为什么 [1, 2, , 4, 5] 是一个有效的 JavaScript 数组?

regex - 生成基于正则表达式的字符串的所有可能组合的列表

language-agnostic - 编程中的术语 "Context"?

assembly - 有没有直接与硬件对话而不是汇编的语言?

c# - C#.net 和 Visual Basic.net 之间有什么区别?

programming-languages - 第一个 Hello World 应用程序是用什么编写的?

java - 如何从 Java 中没有扩展名的文件中读取?

algorithm - 程序分析入门

java - 术语 'Platform Independent' 在编程语言上下文中的相关性