未来能否编译 Ruby 并提高其速度?

7

C、Java、C# 和 Python 从一开始就是编译型语言。由于 Facebook 的贡献,PHP 现在也可以编译并在 HHVM 上运行,从而提高程序性能。

Ruby 不是编译型语言,比前面提到的语言慢。它是否有可能在未来变成编译型语言(像 PHP 与 HHVM)?或者可能有一些原因使其无法实现吗?


1
欢迎来到 Stack Overflow。您的问题鼓励观点和猜测,而不是具体答案。请阅读“[help/on-topic]”获取相关信息,“[help/dont-ask]”获取不应提问的问题。Ruby 可能在未来可编译,但何时以及是否可行尚不确定。 - the Tin Man
1
所有现有的甚至大多数过去的Ruby实现都有编译器:YARV、Rubinius、JRuby、IronRuby、MagLev、Topaz、Cardinal、RubyGoLightly、XRuby、SmallRuby、BlueRuby、Alumina、Ruby.NET、另一个IronRuby(同名的两个不同实现)、RedSun、MacRuby、MRuby、RubyMotion,还有可能有很多我忘记了的。唯一两个从未有过编译器的实现是IoRuby(从未发布)和MRI(已弃用且未维护)。JRuby最初是纯解释器,但后来添加了编译器。更有趣的是:... - Jörg W Mittag
1
IronRuby最初是一个纯编译器,但后来添加了解释器以提高性能!当然,Ruby可以被编译。所有语言都可以被编译。编译和解释是编译器或解释器的特征(当然啦!),而不是语言。性能取决于投入的资金/资源/人员/博士论文数量。Java最初非常慢,只有在Java公司开始购买Smalltalk和Lisp的专业知识后才变得快速。(Oracle HotSpot仍然只是一个略微修改的Smalltalk VM核心。) - Jörg W Mittag
1
此外,当前的CPU架构和操作系统对于像Ruby这样的语言在性能方面是非常不友好的。但是还有其他架构可以更好地适配。同样适用于C语言:C语言很快,因为当前的CPU和操作系统明确设计为使类似C的语言运行得更快。例如,在原始的AS/400上,C语言运行非常慢,因为AS/400没有指针、文件、线程、进程、直接内存操作或虚拟内存,所以C语言基本上必须在提供所有这些功能的解释器模拟器中运行。 - Jörg W Mittag
1个回答

2
该问题提出了错误的陈述/假设。
1. 你提到的所有语言(C、Java、C#、Python和Ruby)都是编译型语言。它们的区别在于编译的时间(运行时编译还是预编译)。 2. 自从1.9版本以后,Ruby也可以被预编译成字节码。 3. Ruby不比其他语言“慢”,仅仅因为它通常在运行时编译(这是一个重大的误解)。如果代码被预编译,它将启动更快,但是预编译代码并不能让它运行得更快。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接