编译与解释语言

问题:

我想更好地了解差异。我已经在网上找到了很多解释,但是它们倾向于抽象的差异,而不是实际的含义。
我的大部分编程经验都是使用CPython(动态,解释)和Java(静态编译)。但是,我明白,还有其他种类的解释和编译语言。除了可执行文件可以从编译语言编写的程序中分发的事实外,每种类型有哪些优点/缺点?通常,我听到人们认为解释语言可以交互使用,但我相信编译语言也可以有交互式的实现,正确吗?

回答:

编译语言是一旦编译的程序在目标机器的指令中表达的语言。例如,源代码中的“+”操作可以直接转换为机器码中的“ADD”指令。
解释语言是指令不是由目标机器直接执行,而是由某些其他程序(通常以本机的语言编写的is)程序读取和执行的语言)。例如,解释器将在运行时识别相同的“+”操作,然后调用自己的“add(a,b)”函数,并使用适当的参数,然后执行机器代码“ADD”指令。
你可以用编译语言中的解释语言做任何事情,反之亦然 – 他们都是图灵完成的。然而,两者都具有实施和使用的优点和缺点。
我要完全概括(纯粹主义者原谅我!),但是大致来说,这里是编译语言的优点:

  • 通过直接使用目标机器的本机代码来提高性能
  • 机会在编译阶段应用相当强大的优化

这里是解释语言的优点:

  • 更容易实现(编写好的编译器非常辛苦!!)
  • 无需运行编译阶段:可以直接执行代码“即时”
  • 可以更方便的动态语言

请注意,现代技术(例如字节码编译)会增加一些额外的复杂性 – 这里发生的是编译器定位的一个“虚拟机”与底层硬件不同。然后可以在稍后阶段再次编译这些虚拟机指令以获得本机代码(例如,由Java JVM JIT编译器完成)。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Compiled vs. Interpreted Languages

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 3 = 4