![]() |
1
2
解释器将某种形式的源代码翻译成目标表示,它可以立即执行和计算。解释器的结构类似于编译器的结构,但是生成可执行表示所需的时间会随着优化量的变化而变化。下图显示了差异的一种表示。 图解的 编译器特性:
口译员特点:
|
![]() |
2
9
有几个 esoteric languages 它既没有编译器也没有解释器,因为它们仅仅是作为智力练习而设计的,正在等待有人真正实现它们。 |
![]() |
3
8
拉丁语和亚拉姆语。两种死了的语言,有翻译,但没有足够的现场演讲者来保证任何口译员。你可以加上克林贡语,但我怀疑现在真的有翻译。 |
![]() |
4
5
|
![]() |
5
3
然后硬件描述语言(VHDL,Verilog,…)我认为没有这些。 Verilog与VHDL 是 作为芯片实现的晶体管电路。 类似地,我认为您不会发现许多交互式约束求解器语言。 与硬件设计语言一样,约束程序大多是执行的 约束求解器语言通常被编译为较低级别的表示 它的“处理”比传播约束的解释要多 基于依赖关系。 一般来说,这两者都不会产生“机器指令”。 |
![]() |
6
2
阶梯式语言 可编程逻辑控制器(PLC)没有编译器或解释器。阶梯被转换成布尔条件来管理输入、输出和内存状态。梯形图每秒计算数千次,以便在硬件上实际运行代码。 祝你好运! |
![]() |
7
1
前一种情况更有趣一些。有些语言实际上是逻辑和(通过 Curry-Howard correspondence )这些逻辑中的证明也是程序(反之亦然)。如果逻辑是不可判定的,或者如果语言中包含了某种高阶结构,而这些结构不是很正规化的(比如一些非常有表现力的类型系统),那么编译或解释就成了一件有点可怕的事情。这可能开始接近“不编译”的境界 但这是一个有点虚假的说法,因为如果我们能让计算机操纵这些符号,我们就可以编写一个解释程序。类似地,如果它没有语义,那么它可能不会对可计算函数进行操作——在这一点上,它可能只是某种自然语言,不再是“编程语言”。 Church-Turing thesis 他说,为图灵完备语言编写一个解释器总是可能的,即使这个解释器最终是另一个图灵机器。 我看到一些关于机器语言的其他答案。机器语言没有什么神奇之处,除了它有一个非常紧凑的表示。一个人可以很容易地为它编写一个解释器,而且有许多解释器(例如,各种虚拟机忠实地在软件中实现硬件处理器的执行语义)。 符合条件的语言可能是没有执行语义的语言,即它们不表示可计算函数。我知道有两种语言的语义是固定的,它们既不能由解释器直接执行,也不能编译成其他语言 而不是用额外的信息丰富这些程序 |
![]() |
8
0
一些小的RISC机器代码也没有,因为它们所做的只是将位推送。没有解释,因为不可能在较低的级别运行它,也没有编译,因为它已经是0和1了。 |
![]() |
9
0
我的一个同学可以在电脑上写一个完整的麦克风到扬声器程序
|
![]() |
10
0
HTML是一种语言,但却是一种标记语言。我不知道浏览器是如何解析它们的,但是我假设它们逐行解释它们,构建DOM和呈现元素等等。 自然语言,如英语,有大量且不断增长的语法,除非使用精确的形式,否则并不总是用正式的表示法(如BNF)来表示。我想。 所以我说,你不可能真的为英语和许多自然语言建立一个解释程序,因为它总是不断发展的——看看chatspeak和textspeak。
|
![]() |
11
-1
编译器将整个源代码转换为其他代码,通常是机器代码或某种低级中间语言,如java字节码或.net IL。解释器在执行程序时逐行转换源代码。除非你用汇编语言写,否则你必须做一件或另一件事,甚至需要把汇编语言的语法转换成二进制机器代码。 |
|
Gengetsu · 如何从Bison中的语法启动变量? 7 年前 |
![]() |
Jon Deaton · 如何使用元循环计算器引导Lisp解释器 8 年前 |
![]() |
liyuan · 解释器如何翻译for循环? 8 年前 |
![]() |
ææç · 解释器交互模式保持文件打开的目的 11 年前 |
|
user3318845 · 字节码如何更快?[已关闭] 11 年前 |
![]() |
Trung Bún · OCaml解释器:为什么我的解释器只执行文件中的一行 11 年前 |