Scala gegen Groovy gegen Clojure
Kann mir bitte jemand erklären die wichtigsten Unterschiede zwischen Scala, Groovy und Clojure. Ich weiß, jeder dieser kompiliert, läuft auf der JVM, aber ich hätte gerne einen einfachen Vergleich zwischen Ihnen.
InformationsquelleAutor der Frage James Fassett | 2009-08-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Grooviger ist eine dynamisch typisierte Sprache, deren syntax sehr nahe an Java, mit einer Reihe von syntax-Verbesserungen, die es ermöglichen, für Feuerzeug-code und weniger boilerplate. Es kann ausgeführt werden durch einen interpreter, als auch als kompilierte, das es gut für das schnelle prototyping, Skripts und dynamische Sprachen lernen, ohne eine neue syntax zu lernen (vorausgesetzt, Sie wissen, Java). Als Groovy-2.0, es hat auch die wachsende Unterstützung für statische Kompilierung. Groovy unterstützt Verschlüsse und hat die Unterstützung für die Programmierung in einer einigermaßen funktionalen Stil, obwohl es immer noch ziemlich weit von der traditionellen definition der funktionalen Programmierung.
Clojure ist ein Dialekt von Lisp mit ein paar erweiterten Funktionen wie Software Transactional Memory. Wenn Sie wie Lisp und würde gerne etwas verwenden, wie es unter der JVM, Clojure ist für Sie. Es ist möglicherweise die meisten funktionale Sprache läuft auf der JVM, und sicherlich der berühmteste. Außerdem hat es eine stärkere Betonung der Unveränderlichkeit als andere Lisp-Dialekte, die Sie näher an die Herzen der funktionalen Sprache Enthusiasten.
Scala ist eine vollständig objektorientierte Sprache, mehr als die von Java, mit einer der modernsten Typ-Systeme verfügbar auf nicht-Forschung Sprachen, und sicherlich die am meisten fortgeschrittenen Typ-system auf der JVM. Es verbindet auch viele Konzepte und features von funktionalen Sprachen, ohne Kompromisse bei der Objekt-Orientierung, aber seine Kompromisse bei der funktionalen Merkmale der Sprache abgeschreckt einige Enthusiasten des letzteren.
Groovy hat eine gute Akzeptanz und einen gängigen web-framework Grails. Es treibt auch die Gradle-build-system, das ist immer eine beliebte alternative zu Maven. Ich persönlich denke, es ist eine Sprache mit nur sehr bedingt, vor allem wie Jython und JRuby start auf dem Vormarsch, die auf der JVM-land, im Vergleich zu den anderen.
Clojure, auch Diskontierung einige sehr interessante features, hat eine starke Anziehungskraft, wenn Sie nur ein Lisp-Dialekt, der auf der JVM. Es beschränken könnten, seine Popularität, zugegeben, aber ich erwarte, dass es wird haben treue community rund um es für eine lange Zeit.
Scala mithalten können direkt mit Java, und es geben ein Lauf für Ihr Geld auf fast alle Aspekte. Es kann nicht konkurrieren in der Popularität im moment, natürlich, und das fehlen einer starken corporate sichern kann behindern die Akzeptanz auf Unternehmens-Umgebungen. Es ist auch eine viel dynamischere Sprache als Java, in dem Sinne, wie die Sprache entwickelt sich weiter. Aus der Perspektive der Sprache, das ist eine gute Sache. Aus der Perspektive der Nutzer, die Vorhaben, auf Tausende von Zeilen code geschrieben, nicht so.
Als eine endgültige Offenlegung, ich bin sehr vertraut mit Scala, und nur die Bekanntschaft mit den anderen beiden.
InformationsquelleAutor der Antwort Daniel C. Sobral
Scala
Scala entwickelte sich aus einer reinen funktionalen Sprache, bekannt als Trichter und stellt eine clean-room-Implementierung fast aller Java-syntax, die sich nur eine deutliche Verbesserung gemacht werden konnten, oder wo es würde ein Kompromiss die funktionelle Natur der Sprache. Solche Unterschiede sind singleton-Objekte anstelle von statischen Methoden und Typ-Inferenz.
Viel dieses wurde, basierend auf Martin Odersky die Vorherige Arbeit mit der Pizza Sprache. Die OO/FP integration geht weit über die bloße Verschlüsse und führte zu der Sprache, die beschrieben wird als post-funktional.
Trotz dieser, es ist die am nächsten an Java in vielerlei Hinsicht. Vor allem aufgrund einer Kombination aus OO-Unterstützung und statische Typisierung, sondern auch durch ein ausdrückliches Ziel in der design-Sprache, die Sie integrieren sollten sehr eng mit Java.
Groovy
Groovy ausdrücklich die Veröffentlichung zwei Java-die größte Kritik
Es ist vielleicht syntaktisch am nächsten an Java, nicht mit einigen der reicheren funktionale Konstrukte, Clojure und Scala bieten, aber trotzdem mit einer bestimmten evolutionären Verbesserung - vor allem für das schreiben von script-syle-Programme.
Groovy hat die stärkste kommerzielle Unterstützung der drei Sprachen, die meist über springsource.
Clojure
Clojure ist eine funktionale Sprache, die in der LISP-Familie, es ist auch dynamisch typisiert.
Features wie das STM-support geben, einige der besten out-of-the-box-Unterstützung von Parallelität, in der Erwägung, dass Scala erfordert ein 3rd-party-Bibliothek wie Akka duplizieren.
Syntaktisch, es ist auch die am weitesten von den drei Sprachen von typischen Java-code.
Ich habe auch offen, dass ich bin am meisten vertraut mit Scala 🙂
InformationsquelleAutor der Antwort Kevin Wright
Hatte ich nie Zeit zu spielen mit clojure. Aber für scala vs. groovy, das ist Worte von James Strachan - Groovy Schöpfer
Lesen Sie die ganze Geschichte hier
InformationsquelleAutor der Antwort Thai Tran