这是我目前唯一知道的提问方式.据了解,Scala使用Java虚拟机.我还以为Jruby也是.Twitter将其中间件切换到Scala.Could they have done the same thing and used Jruby?

他们可以从Jruby开始,而不是一开始就因为扩展问题而从Ruby迁移到Scala吗?我不明白Jruby是什么吗?我假设,因为Jruby可以使用Java,所以它可以扩展到Ruby无法扩展的地方.

在这种情况下,这一切都归结为静态和动态类型吗?

推荐答案

Scala是"可伸缩的",因为库可以通过某种方式对language进行改进,使扩展看起来像是语言的一部分.这就是为什么演员看起来像语言的一部分,或者为什么BigInt看起来像语言的一部分.

这也适用于大多数其他JVM语言.它不适用于Java,因为它对它的基本类型(Int、Boolean等)有特殊的处理,对运算符有特殊的处理,繁琐的语法可以清楚地说明语言中构建了什么,什么是库,等等.

现在,Scala比dynamic languages on the JVM更具性能,因为JVM不支持它们.JVM上的动态语言必须采用t反射,这非常缓慢.

Ruby相关问答推荐

Ruby:这两种混入模块方法是否等效?

类 SpecificationPolicy 的超类不匹配

使用正则表达式判断用户输入的开头是否正好有两个大括号

Ruby open-uri 重定向被禁止

冒号:和粗箭头=>有什么区别

为什么 ruby​​ 在 Windows 上这么慢?

如何调试/显示使用 RestClient 发送的请求

如何判断 Ruby 数组是否包含多个值之一?

差异 - unless/if

Rails 在最后一个之前加入逗号和and的字符串列表

如何使用 Ruby 2.3 中引入的 Array#dig 和 Hash#dig?

如何在 ruby​​ rake 中明确地失败任务?

无法对 ruby​​ 哈希使用点语法

如何在 Ruby 脚本中运行 Rake 任务?

很好地格式化输出到控制台,指定选项卡的数量

如何合并 Ruby 哈希

向实例对象添加方法

为什么在 ruby​​ 中动态创建大量符号不是一个好主意(对于 2.2 之前的版本)?

如何计算 Ruby 数组中的重复元素

Ruby:如何计算一个字符串在另一个字符串中出现的次数?