像这样的语言吗?如果需要执行例如方法或循环体,Ruby(如果运行MRI,我的意思是不编译为字节代码)运行实际上每次都会解析?我的意思是,要执行一个循环,你需要解析它的主体 N 次?
我一直以为所有这些程序都在引导程序中被解析一次,在“强类型”语句树中转换,等等。这不是真的吗?
答案 0 :(得分:4)
解释是一个定义非常宽松的词。甚至机器代码指令也由处理器解释。
通常,在运行之前编译的语言与没有编译过程并在另一个程序(称为解释程序)内运行的语言之间进行区分。后一种语言通常被称为interpreted languages。
在某些情况下,这条线并不清楚:
exec
功能,允许在运行时生成和执行代码,绕过正常的编译过程。答案 1 :(得分:4)
我现在只是吝啬,并说几乎每种编程语言都被解释,无论是软件(Ruby,Python,Java)还是硬件(C,C ++)解释器:)
对于一个真正的答案,虽然我不知道内部的Ruby实现,但我确定他们不会一遍又一遍地解析语句。虽然在原始实现中没有使用字节码(或者它们是否已经迁移?),但是它们使用了一些中间表示(当你想为它编写C扩展时可以很好地看到它),因此只是反复执行它们。 / p>