根据Charles Nutter, Duby 是
Ruby的静态类型语言 语法和Java的类型系统。迪比 支持所有Ruby的文字,用法 本地类型推断(仅限参数 类型必须被声明),并运行为 像Java一样快(因为它产生 几乎相同的字节码)。但随着 虚拟动态的出现,杜比 需要一个玩伴。
1。什么是invokedynamic,为什么Duby“需要一个玩伴”?
另一方面,Juby 是
基本上就像Duby一样 它使用Java的类型和Ruby 句法。但它利用了 新的invokedynamic操作码是100% 动态。 Juby是一个充满活力的Duby,或者 也许是Ruby的动态Java 句法。理解起来并不难。
实际上很难理解。
2。有人可以详细说明这种区别是什么吗?
第3。为什么我们需要( need!)另一种与Ruby相关的语言?或者更确切地说,还有两种与Ruby相关的语言?
答案 0 :(得分:50)
答案 1 :(得分:6)
Mirah(以前称为Duby)存在,因为静态类型可以通过Java / Hotspot显着提高性能。 Surinx(以前称为Juby)是一回事,除了它还利用JDK7中的新性能特性来进一步提升性能。
性能功能通常称为“invokedynamic”,Nutter's blog也提供了很好的解释。
答案 2 :(得分:4)
刚刚遇到这个,直接from Charles himself部分解决了这个问题(重新:它们之间的区别):
这让我走向了未来 Surinx。它甚至比简单的更简单 杜比的未来:两者将合并。如 我曾在Surinx和Duby工作, 这对我来说很明显 他们基本上是同一种语言 具有不同的调度机制和 类型声明要求。和 因为Duby很容易对待无类型 或动态类型表达式 需要动态调用,有 没有理由Surinx不应该只是 被同化为Duby的一个特征。
答案 3 :(得分:3)
与语言一样,我们不会创建它们,因为我们需要它们。人们出于某种原因创造它们,除非我们需要它们,否则它们仍然模糊不清。
那里有很多晦涩难懂的语言;他们玩的很有趣,但可能不是你想做一个真正的项目。
答案 4 :(得分:2)
我怀疑在某些时候我可能能够在Plain Ol'Fynamic Ruby中对一段代码进行原型设计,当它工作但需要明显更快时,将其移植到相对较小的痛苦程度,然后关闭将编译为优化的JITted Java字节码的关系。或者很可能是IronRuby#.NET,Sapphire或其他。
图形处理,重数学,人工智能,类似的东西。我怀疑这样做会有一些乐趣...