繁体   English   中英

语言被“解释”意味着什么?

[英]What does it mean for a language to be ‘interpreted’?

像Ruby这样的语言(如果运行MRI,我的意思是没有编译成字节码)运行实际上每次执行时都需要解析,例如方法或循环体吗? 我的意思是,要执行一个循环,你需要解析它的身体N次?

我一直以为所有这些程序都在引导程序中被解析一次,在“强类型”语句树中转换,等等。这不是真的吗?

解释是一个定义非常宽松的词。 甚至机器代码指令也由处理器解释。

通常,在运行之前编译的语言和没有编译过程并在另一个程序(称为解释程序)内运行的语言之间进行区分。 后一种语言通常被称为解释语言

在某些情况下,这条线并不清楚:

  • 有些语言可以编译或解释,例如PHP。
  • 某些解释的代码可能在运行时编译为本机机器指令( JIT编译 )。
  • 某些编译语言可能具有exec功能,允许在运行时生成和执行代码,绕过正常的编译过程。

我现在只是吝啬,并说几乎每种编程语言都被解释,无论是软件(Ruby,Python,Java)还是硬件(C,C ++)解释器:)

对于一个真正的答案,虽然我不知道内部的Ruby实现,但我确定他们不会一遍又一遍地解析语句。 虽然在原始实现中没有使用字节码(或者它们是否已经迁移?),但是它们使用了一些中间表示(当你想为它编写C扩展时可以很好地看到它),因此只是反复执行它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM