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

Mirah比JRuby、Groovy和Scala提供了什么?,scala,groovy,jruby,language-comparisons,mirah,Scala,Groovy,Jruby,Language Comparisons,Mirah,与JRuby、Groovy和Scala相比,它提供了什么?根据Mirah的观点(在爪哇语中是“ruby”的意思)是创建一个高性能的ruby变体。有足够的Ruby语法使其易于使用,但仍然足够接近Java和JVM语义,因此它可以运行,而不需要JVM上的大型运行时层的开销 选择报价: Mirah相对于类似语言的许多好处都归结为它的轻量级。在Groovy、Scala、JRuby、Clojure或Jython中,在您编写“Hello,world”的那一刻,您就将自己束缚在一个运行库中。在Mirah中,“H

与JRuby、Groovy和Scala相比,它提供了什么?

根据Mirah的观点(在爪哇语中是“ruby”的意思)是创建一个高性能的ruby变体。有足够的Ruby语法使其易于使用,但仍然足够接近Java和JVM语义,因此它可以运行,而不需要JVM上的大型运行时层的开销

选择报价:

Mirah相对于类似语言的许多好处都归结为它的轻量级。在Groovy、Scala、JRuby、Clojure或Jython中,在您编写“Hello,world”的那一刻,您就将自己束缚在一个运行库中。在Mirah中,“Hello,world”与JRuby一样简洁,但它还有一个额外的好处,就是不依赖于您;源文件进入,类文件出来,就这样。我相信JVM需要一种新的无依赖性语言,Mirah是我的尝试

虽然JRuby的性能可以与其他Ruby解释器相媲美或超越,但最快的JRuby代码仍然落后于纯Java性能一个数量级。虽然您可以预期JRube的性能在1.6版本中得到改进,但Mirah是一个尝试突破性能上限的程序员,它提供了一个程序员可以选择的执行速度与java代码一致的选项。
与功能齐全的语言不同,Mirrah有自己的库,它更像是Java库的另一个“前端”

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


这是主要的好处:Java的语法不同。与Groovy相比

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

  • 静态类型
与Scala的对比

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

当依赖关系是一个考虑因素时(例如开发android应用程序),那么你不应该让它指导你的语言选择。使用像Proguard这样的工具将为比赛铺平道路

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

如果你以前只有Java的经验,那你就太丢脸了您可能应该选择Scala——它正在迅速赢得Java继承者的声誉,工具支持目前更强大,您将加入一个由其他人组成的大型社区,他们也进行了同样的转换,因此已经有很多博客/教程可用


还有Groovy?Groovy现在几乎从来都不是正确的选择…

我每天都在谷歌AppEngine上使用Mirah

以下是我使用Mirah的原因:

  • 没有运行库
  • 非常好的语法
  • 和Java一样快
在引擎盖下使用Java也非常有用:

  • 立体打印系统
  • 有据可查
  • 常见问题的已知解决方案
我做了一些Groovy,很多JRuby,没有一个Scala。 如果你知道这些,试试米拉。
如果不是,我会选择JRuby。

Mirah只是java的另一种rubyish语法。我一点也不好。它对泛型一无所知,而且工具也很差。最好试试锡兰、xtend、scala、kotlin等。
Mirah编译成java类(不再是源代码)。Xtend编译成java源代码,因此更容易了解它在幕后的作用。Ceylon和scala都有自己的stdlib(尽管java互操作在两者中都近乎完美),但对kotlin并不确定。科特林是JetBrains的孩子,因此与这个想法息息相关。
我也不喜欢JRuby。它在java互操作中有太多的bug。而且它也有太多重新发明的轮子。我指的是编码(它不使用java字符串和正则表达式,而是在原始字节缓冲区上使用自定义字符串)、IOs、异常处理、线程等
jruby的唯一优点是它是ruby。许多ruby代码将按原样工作。

Groovy OTOH并没有重新发明轮子,它使用经过良好测试的java库,只是在其中添加了语法糖。groovy java互操作也很棒。它可以是泛型。线程、异常、字符串、集合——和java中的一样,都是java类

@pst:你认为语言是动态的还是静态的是一个压倒一切的问题,其他任何语言都无法与之相比?@pst:没有时间学习四种语言:),更不用说我怀疑我能通过快速嗅闻每种语言的真正气味。@El Gusto我说“尝试”,而不是“学习”(彻底):-)根据我的经验,在一个小的“介绍”项目中,只需几天时间,我就能知道这是不是我想要学习的语言(例如,我给它打分)。这并不意味着细微差别是已知的或代码是惯用的,而是足以大致了解“大局”。@这是我的正确观点(很棒的名字,顺便说一下)-这些问题经常出现。苹果和桔子。不管是红色的美味还是血脐。@3lijandro:给出的答案缺少什么?我建议你要么提及IYHO目前还缺少的东西,要么接受一个答案,那就好了。执行摘要:“Mirah语言比JRuby、Groovy和Scala提供了什么?”根据他们的说法,性能。Scala是静态类型的。Ruby/Groovy/Clojure增加了Scala没有的性能负担。为什么它会出现在这个列表中?@El Gusto:好吧,当你在Scala中编写一个
Hello World
,你会得到
6.496.110 Scala library.jar
(Scala 2.8.1),再加上Java自己的库(当然,这会让这个文件蒙羞)。米拉没有带来任何新的库,这确实很有趣。@pedrofurla事实上,我没有读过任何关于“性能”的书