如何执行ruby代码

use*_*912 10 ruby interpreter

我最近开始学习Ruby.我知道Ruby是一种解释型语言(尽管"每种"语言都是因为它被CPU解释为机器代码).但ruby解释器如何将用Ruby编写的代码转换为机器代码?我已经读过,解释器不会读取源代码,而是读取字节码,但是我从来没有像在Java中那样编译.那么,这是Ruby为你做的另一件事吗?如果确实如此,它是否在运行时生成字节代码?因为你永远不会像在Java中那样获得.class文件.最重要的是,我读到了Just-In-Time编译器,它显然对字节代码做了一些事情,因此它运行得更快.

如果是上述情况,解释器首先扫描所有源代码,将其转换为字节代码,然后在运行时使用JIT再次编译它?

最后我不是在寻找有关性能方面的答案,我只是想知道它是如何处理的,它经历了哪些阶段以及它在什么时候这样做.

谢谢你的时间.

我正在使用这个插件http://www.ruby-lang.org/en/

Osc*_*Ryz 9

但ruby解释器如何将用Ruby编写的代码转换为机器代码?

它没有,至少不是所有的实现.

Afaik只有Rubinius试图做你所描述的,那就是编译机器代码.

我已经读过,解释器不会读取源代码,而是读取字节码,但是我从来没有像在Java中那样编译.那么,这是Ruby为你做的另一件事吗?

如果确实如此,它是否在运行时生成字节代码?

是的,差不多.并将其保存在记忆中.交易是下次必须阅读 - >翻译 - >重新执行.

如果是上述情况,解释器首先扫描所有源代码,将其转换为字节代码,然后在运行时使用JIT再次编译它?

不是所有的源代码,只是它需要的东西.然后是的,创建一个字节码表示将其保存在内存中,而不一定是编译为机器代码.