2010-11-23 5 views
12

Was bietet Mirah language über JRuby, Groovy und Scala?Was bietet Mirah über JRuby, Groovy und Scala?

+1

@pst: Sie denken, dass Sprachen, die dynamisch oder statisch sind, solch ein übergeordnetes Problem sind, dass nichts anderes vergleichbar ist? –

+2

@pst: Keine Zeit, um vier Sprachen zu lernen :), ganz zu schweigen davon, dass ich bezweifle, dass ich in der Lage sein werde, den wahren Geruch jeder Sprache zu riechen, indem ich schnell schnüffle. – Chiron

+0

@El Gusto Ich sage "probiere", nicht "lerne" (gründlich) :-) Nach meiner Erfahrung, nur ein paar Tage in einem kleinen "Intro" -Projekt, lass mich wissen, ob es eine Sprache ist, die ich verfolgen möchte (zB ich weisen Sie ihm einen Verdienst zu) oder nicht. Es bedeutet nicht, dass die Nuancen bekannt sind oder der Code idiomatisch ist, sondern genug, um "das große Ganze" zu sehen. –

Antwort

9

Laut an interview with Mirah's creator ist der Punkt von Mirah (was auf Javanisch "Rubin" bedeutet), eine Hochleistungsvariante von Ruby zu schaffen. Genügend Ruby-ähnliche Syntax, die die Arbeit erleichtert, aber dennoch nahe genug an die Java und JVM Semantik heranreicht, sodass sie ohne den Overhead einer großen Runtime-Schicht auf der JVM ausgeführt werden kann.

Wahl Zitat:

Ein großer Teil der Nutzen von Mirah über ähnliche Sprachen kommt unten so leicht zu sein. In Groovy, Scala, JRuby, Clojure oder Jython haben Sie sich in der Minute, in der Sie "Hello, world" schreiben, an eine Laufzeitbibliothek gefesselt. In Mirah ist "Hello, world" genauso kurz wie in JRuby, hat aber den zusätzlichen Vorteil, dass es keine Abhängigkeiten von dir gibt; Die Quelldatei kommt rein, die Klassendatei kommt raus und das war's. Ich glaube, dass die JVM eine neue abhängigkeitsfreie Sprache braucht, und Mirah ist mein Versuch, einen zu liefern.

Während die Leistung von JRuby mit anderen Ruby-Interpretern konkurriert oder diese übertrifft, liegt der schnellste JRuby-Code immer noch um eine Größenordnung hinter der reinen Java-Leistung zurück. Während Sie erwarten können, dass sich die Performance von JRuby mit der Version 1.6 verbessert, ist Mirah ein Versuch, die Leistungsgrenze zu durchbrechen und Programmierern, die nach Ausführungsgeschwindigkeiten auf Java-Niveau suchen, eine Option zu bieten.

+0

Danke, aber immer noch bewölkt für mich. – Chiron

+3

Zusammenfassung: "Was bietet Mirah Sprache über JRuby, Groovy und Scala?" Ihnen zufolge, Leistung. – Thilo

+7

Scala ist statisch typisiert. Ruby/Groovy/Clojure fügt eine Leistungsbelastung hinzu, die Scala nicht hat. Warum ist es in dieser Liste? – pedrofurla

12

Im Gegensatz zu voll ausgestatteten Sprachen, die mit eigenen Bibliotheken ausgestattet sind, ist Mirrah eher ein anderes "Frontend" für die Java-Bibliotheken.

Der Mirrah-Code hängt nicht von seiner eigenen Umgebung ab (mit Ausnahme des Mirrah-Compilers zur Kompilierungszeit).

Das ist der Hauptvorteil: Eine andere Syntax für Java.

+1

Ich denke, das sollte die richtige Antwort sein, Mirah braucht keine Laufzeit überhaupt ... – opensas

8

vs. Groovy

  • Syntax vertrauter bestehenden Rubin/JRuby Programmierer
  • Statisch
  • getippt

gegen JRuby

  • Staticall y getippt

gegen Scala

  • Syntax vertrauten bestehenden Rubin/JRuby Programmierer

Die wichtigsten Vorteile sind statische Typisierung (schnellere Leistung auf der JVM und viel einfacher Interop mit bestehenden Java-Bibliotheken) und eine vertraute Syntax (, wenn Sie von Ruby kommen).

Wenn Abhängigkeiten eine Überlegung sind (Entwickeln einer Android-App, zum Beispiel) dann sollten Sie diese Anleitung Ihre Sprachwahl nicht lassen.Mit einem Werkzeug wie Proguard wird das Spielfeld ausgeglichen.

Wenn Sie von Ruby kommen, dann ist Mirah eine gute Wahl. Wenn Sie aus Erlang oder Haskell kommen, dann werden Sie Scala wollen. Wenn Sie ein LISPer sind, sollten Sie sich Clojure anschauen.

Wenn Ihre einzige vorherige Erfahrung Java ist, dann schämen Sie sich! - und Sie sollten sich wahrscheinlich für Scala entscheiden - Es gewinnt schnell den Ruf, der Erbe von Java zu sein, der Werkzeug-Support ist momentan stärker und Sie werden in einer großen Gemeinschaft von anderen sein, die denselben Übergang gemacht haben, also gibt es viele Blogs/Tutorials bereits verfügbar.

und Groovy? Groovy ist heutzutage fast nie die richtige Wahl ...

+0

Warum ist Groovy heute die richtige Wahl? –

+3

@seymour - James Strachan (Autor von Groovy) fasst es gut in seinem Blog zusammen: http://macstrac.blogspot.com/2009/04/scala-as-long-term-replacement-for.html –

5

Ich benutze Mirah jeden Tag auf Google AppEngine.

Hier meine Gründe sind Mirah zu verwenden:

  • keine Laufzeitbibliothek
  • sehr schöne Syntax
  • so schnell wie Java

Mit Java unter der Haube sehr hilfreich ist auch:

  • feste typsystem
  • gut
  • bekannten Lösungen für gemeinsame Probleme dokumentiert

Ich habe einige Groovy, viel JRuby und keiner von Scala. Wenn Sie diese kennen, versuchen Sie Mirah. Wenn nicht, würde ich mit JRuby gehen.

+0

Danke für das Teilen eine Produktionsgeschichte. – Chiron

+0

Nicht sicher, dass ich diese Logik verstehe: gehe mit JRuby, wenn du kein Groovy oder JRuby gemacht hast. Wenn Sie es getan haben, dann gehen Sie mit Mirah. Ich würde das herausfordern! Wenn überhaupt, gibt es ein starkes Argument für die Wahl von Scala, es sei denn, Sie haben spezielle Anforderungen für die Ruby-Syntax oder löschen Abhängigkeiten, ohne proguard zu verwenden. –

+0

Ich kann Ruby/JRuby jedem empfehlen, da es einfach zu erlernen ist und Spaß macht. – hakunin

-2

Mirah ist nur eine weitere Ruby-Syntax für Java. IMHO nicht gut. Es weiß nichts über Generika und hat auch schlechte Werkzeuge. Versuchen Sie besser ceylon, xtend, scala, kotlin usw.
Mirah kompiliert zu Java-Klassen (keine Quellen mehr). Xtend kompiliert zu Java-Quellen und ist so einfacher herauszufinden, was es unter der Haube tut. Ceylon und Scala haben ihre eigenen Stdlibs (trotzdem ist Java-Interop in beiden Welten perfekt), nicht sicher über Kotlin. Kotlin ist JetBrains 'Kind und damit an IDEA gebunden.
JRuby mag ich auch nicht. Es hat zu viele Bugs in Java-Interop. Und es hat auch zu viele neu erfundene Räder. Ich meine Kodierungen (es verwendet keine Java-Strings und Regexes, sondern benutzerdefinierte Zeichenfolgen oben auf Raw-Byte-Puffer), IOs, Ausnahmebehandlung, Threads usw. Der einzige Vorteil von jruby ist, dass es Rubin ist. Viele Ruby-Codes funktionieren einfach so wie sie sind.
Groovy OTOH erfindet das Rad nicht neu, es verwendet gut getestete Java-Bibliotheken und fügt einfach Syntaxzucker hinzu. Auch groovy-java interop ist großartig. Es kann Generika geben. Threads, Exceptions, Strings, Collections - sind nur Java-Klassen, wie sie in Java sind.