编译器、解释器和两者的示例

4

我已经阅读了关于编译器、解释器以及两者兼备的“东西”的定义的足够多的解释。但是,我没有找到足够的现实生活中的例子来区分这些东西。

您能否提供任何编程语言/“东西”中的示例?并请解释如何区分它们。

此外,人们说解释器评估源代码以进行即时执行,这是否意味着每个编译器都有解释器来运行它们?谢谢。


离题了,因为您正在寻求外部资源,而且您没有显示任何源代码。 您是否阅读过有关编译器解释器编程语言语义的维基页面... - Basile Starynkevitch
我已经阅读过它们,但是大多数人都说现在很难区分这些词语。所以,我想只要有足够的例子,就可以完全理解它们之间的区别。 - Bla...
编译器和解释器之间存在一个连续体。但这仍然不属于此处的话题。您可以在http://programmers.stackexchange.com/上提出更专注的问题(*在*做一些研究后) - 那里有几个问题(其中一些我已经回答)与您的问题相关。查看[GCC](http://gcc.gnu.org/),[SBCL](http://sbcl.org/)等... - Basile Starynkevitch
1
还可以阅读关于即时编译字节码抽象语法树的内容。深入研究一本好的编译器书籍。 - Basile Starynkevitch
1个回答

3

AFAIK

据我所知

编程语言是一种用于创建程序的语言,可以作为编译器或解释器实现

编译器是将源代码、字节码翻译成另一种源代码、字节码或二进制的程序,例如:

  • gcc
  • clang
  • javac
  • go(编译器)

有些编译器在程序第一次运行之前运行,但也有一些情况下编译器在程序启动后运行,这称为JIT(即时编译)。

解释器是执行源代码或字节码的程序,例如:

  • ruby(解释器)
  • python(解释器)
  • php(解释器)

处理器是执行二进制代码的硬件

你提到的“东西”可能是Java(程序、虚拟机)执行字节码,mozjs(JavaScript引擎)执行源代码,但两者都可以进行JIT编译。


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