能否编写一个编译器,将 javascript 编译成流畅的程序,从而提高效率?
我知道即时编译,但我所说的是采用 javascript 并以类似于编译操作系统应用程序的方式对其进行编译。
只是一个实验问题。
最佳答案
这个问题之前已经讨论过here和 here (大概在许多其他地方)。
其要点是:
JavaScript 的语言规范并未声明它是一种解释性语言。它仅仅定义了语言的语法和语义。
大多数解释语言首先被解析并翻译成中间形式,又名 Byte Code 。这个过程通常称为“编译”,这是编译器的工作*)
一些 JavaScript 解释器实际上是编译器/字节码执行器,例如Google's V8 (“V8 编译并执行 JavaScript 源代码,...”)。 Microsoft's Jurassic另一方面,用于将 .NET 编译为 CLI 字节码的公司声称只是一个编译器。
程序的后续执行使用字节码,并且不会引用程序的 JavaScript 源代码。 Jurasic 声称分发 .NET CLI 程序集。
您的问题的答案是是和否,具体取决于您要定位的特定平台:
是的,JavaScript 代码可以编译成中间形式,然后由知道处理这种特定形式的字节代码的引擎执行。
不,没有普遍接受的字节代码,也没有此类字节代码的通用解释器(又名 Virtual Machine )。
话虽如此,“编译”与“编译”的问题“解释型”语言常常显得过于夸张。重要的是要认识到,编译结果的“二进制文件”与其相应的“源代码”之间的差异只是逐渐的。最后,源代码和二进制文件是不同形式的同一事物,或者解释一下:它是 symbols all the way down .
*) 维基百科有这个 definition of a compiler :
A compiler is a computer program (or set of programs) that transforms source code written in a programming language (the source language) into another computer language (the target language, often having a binary form known as object code).
关于javascript - 编译Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21005773/