【问题标题】:What does Mirah offer over JRuby,Groovy and Scala?Mirah 在 JRuby、Groovy 和 Scala 上提供了什么?
【发布时间】:2010-11-23 02:02:17
【问题描述】:

Mirah language 比 JRuby、Groovy 和 Scala 提供什么?

【问题讨论】:

  • @pst:您认为语言是动态的还是静态的是一个压倒一切的问题,没有其他东西可以与之相比?
  • @pst: 没时间学习四种语言 :) 更不用说我怀疑我是否能够通过快速嗅探来闻到每种语言的真正气味。
  • @El Gusto 我说的是“尝试”,而不是“学习”(彻底):-) 以我的经验,仅仅几天的一个小型“介绍”项目,让我知道它是否是一种语言我想追求(例如,我给它分配优点)或不。这并不意味着细微差别是已知的或代码是惯用的,而是足以普遍地看到“大局”。
  • @JUST MY 正确的意见(真棒名字,顺便说一句) - 这些问题出现了很多。苹果和橙子。不管是 Red Delicious (ick!) 还是 Blood Navel。
  • @3lijandro:给定的答案缺少什么?我建议要么提及目前仍然缺少 IYHO 的内容,要么接受一个答案,这很好。

标签: scala groovy jruby language-comparisons mirah


【解决方案1】:

与自带库的全功能语言不同,Mirrah 更像是 Java 库的不同“前端”。

Mirrah 代码不依赖于它自己的环境(编译时的 Mirrah 编译器除外)。

这是主要的好处:Java 的语法不同。

【讨论】:

    【解决方案2】:

    根据an interview with Mirah's creator 的说法,Mirah(在爪哇语中意为“红宝石”)的目的是创建一个高性能的 Ruby 变体。足够类似于 Ruby 的语法使其使用起来很舒服,但仍然足够接近 Java 和 JVM 语义,因此它可以在没有 JVM 之上的大型运行时层的开销的情况下运行。

    选择引用:

    与类似语言相比,Mirah 的大部分优势都归结于它的轻量级。在 Groovy、Scala、JRuby、Clojure 或 Jython 中,当您编写“Hello, world”时,您就已经将自己束缚在运行时库中。在 Mirah 中,"Hello, world" 与 JRuby 中一样简洁,但还有一个额外的好处是不会强加任何对您的依赖;源文件进去,类文件出来,就是这样。我相信 JVM 需要一种新的无依赖语言,而 Mirah 是我尝试提供的一种。

    虽然 JRuby 的性能可以与其他 Ruby 解释器相媲美或超过,但最快的 JRuby 代码仍然落后于纯 Java 性能一个数量级。虽然您可以期待 JRuby 的性能在 1.6 版本中有所提高,但 Mirah 是一种突破性能上限的尝试,并为寻求与 Java 代码同等执行速度的程序员提供了一个选择。

    【讨论】:

    • 执行摘要:“与 JRuby、Groovy 和 Scala 相比,Mirah 语言提供了什么?”据他们说,性能。
    • Scala 是静态类型的。 Ruby/Groovy/Clojure 增加了 Scala 没有的性能负担。为什么会出现在这个列表中?
    • @El Gusto:嗯,当你在 Scala 中编写 Hello World 时,你会得到 6.496.110 scala-library.jar (Scala 2.8.1),加上 Java 自己的库(其中,授予,让该文件感到羞耻)。 Mirah 没有带来任何新的库,这确实很有趣。
    • @pedrofurla 实际上,我没有在他们的网站上阅读任何有关“性能”的信息。他们说的是当前的 JVM 语言在不引入运行时库的情况下没有解决 Mirah 的美学目标,而且通常大小令人望而却步。 除非 Thilo 对性能的定义很奇怪。
    • 性能方面,借助自 Scala 2.8 以来提供的专业化支持,Scala 能够在许多情况下生成比 Java 性能更好的代码 - 通过消除一些装箱和拆箱原语的。这样做的代价是增加了编译字节码的大小。
    【解决方案3】:

    对比时髦的

    • 现有 Ruby/JRuby 程序员更熟悉的语法
    • 静态类型

    对比JRuby

    • 静态类型

    对比斯卡拉

    • 现有 Ruby/JRuby 程序员更熟悉的语法

    主要优点是静态类型(在 JVM 上的性能更快,与现有 Java 库的互操作更容易)和熟悉的语法(如果您来自 Ruby)。

    如果需要考虑依赖项(例如开发一个 android 应用),那么您不应该让这个指导您的语言选择。使用像 Proguard 这样的工具可以平衡竞争环境。

    如果您来自 Ruby,那么 Mirah 是一个不错的选择。如果你来自 Erlang 或 Haskell,那么你会想要 Scala。如果您是 LISPer,那么您会想看看 Clojure。

    如果您之前唯一的经验是 Java,那真丢脸! - 你可能应该选择 Scala - 作为 Java 的继承者,它正在迅速获得声誉,工具支持目前更强大,你将在一个大型社区中进行同样的转换,所以有很多博客/教程已经可用。

    还有 Groovy?如今,Groovy 几乎从来都不是正确的选择...

    【讨论】:

    【解决方案4】:

    我每天都在 Google AppEngine 上使用 Mirah。

    以下是我使用 Mirah 的理由:

    • 没有运行时库
    • 非常好的语法
    • 与 Java 一样快

    在后台安装 Java 也很有帮助:

    • 实体类型系统
    • 有据可查
    • 常见问题的已知解决方案

    我做了一些 Groovy,大量的 JRuby,没有 Scala。 如果你知道这些,试试 Mirah。 如果没有,我会选择 JRuby。

    【讨论】:

    • 感谢分享制作故事。
    • 不确定我是否理解这个逻辑:如果您没有使用过任何 Groovy 或 JRuby,请使用 JRuby。如果你已经完成了,那就和 Mirah 一起去吧。我会挑战那个!如果有的话,除非您对 Ruby 语法有特殊需求,或者在不使用 proguard 的情况下删除依赖项,否则选择 Scala 是一个强有力的论据。
    • 我可以向任何人推荐 Ruby / JRuby,因为它易于上手且有趣。
    • @hakunin,为什么不使用 Scala?我认为没有标准库是不利的。因为你有很好的语法,但你仍然必须使用丑陋的 Java 库 API。例如。比较 Collections.sort(l) { |a, b| a.c.compareTo(b.c) } 到 l.sort_by(&:c)
    • 您可以从这里开始:code.google.com/p/mirah-on-gae(免责声明:我为 GAE 切换到 Pythong,不知道 Mirah 的状态如何)
    【解决方案5】:

    Mirah 只是 java 的另一种 ruby​​ish 语法。恕我直言,一点都不好。它对泛型一无所知,而且工具也很差。最好试试 ceylon、xtend、scala、kotlin 等。
    Mirah 编译为 java 类(不再是源代码)。 Xtend 编译为 java 源代码,因此更容易找出它在后台做了什么。 Ceylon 和 scala 有自己的标准库(尽管 java 互操作在它们中都接近完美),但不确定 kotlin。 Kotlin 是 JetBrains 的孩子,因此与 IDEA 联系在一起。
    JRuby我也不喜欢。它在 java 互操作中有太多错误。而且它也有太多重新发明的轮子。我的意思是编码(它不使用 java 字符串和正则表达式,而是在原始字节缓冲区之上使用自定义字符串)、IO、异常处理、线程等。
    jruby 唯一的优点是它是 ruby​​。许多 ruby​​ 代码将按原样工作。
    Groovy OTOH 并没有重新发明轮子,它使用经过良好测试的 java 库,只是添加了语法糖。 groovy-java 互操作也很棒。它可以泛型。线程、异常、字符串、集合——就像它们在 java 中一样,只是 java 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 2021-10-10
      • 2021-12-01
      • 2014-07-04
      相关资源
      最近更新 更多