Scala vs. Groovy vs. Clojure




language-comparisons (4)

Scala

Scala evolucionó a partir de un lenguaje funcional puro conocido como Funnel y representa una implementación de sala limpia de casi toda la sintaxis de Java, diferenciándose solo en los casos en que se podría realizar una mejora clara o en la que comprometería la naturaleza funcional del lenguaje. Estas diferencias incluyen objetos singleton en lugar de métodos estáticos e inferencia de tipos.

Gran parte de esto se basó en el trabajo previo de Martin Odersky con el lenguaje de Pizza . La integración OO / FP va mucho más allá de los meros cierres y ha llevado a que el lenguaje se describa como post-funcional.

A pesar de esto, es lo más cercano a Java de muchas maneras. Principalmente debido a una combinación de soporte OO y tipificación estática, pero también debido a un objetivo explícito en el diseño del lenguaje que debe integrarse muy estrechamente con Java.

Maravilloso

Groovy aborda explícitamente dos de las mayores críticas de Java por

  • se escribe de forma dinámica, lo que elimina una gran cantidad de repetitivo y
  • Añadiendo cierres al lenguaje.

Quizás sea sintácticamente más cercano a Java, no ofrece algunas de las construcciones funcionales más ricas que proporcionan Clojure y Scala, pero sigue ofreciendo una mejora evolutiva definitiva, especialmente para escribir programas de scripts.

Groovy tiene el respaldo comercial más sólido de los tres idiomas, principalmente a través de springsource.

Clojure

Clojure es un lenguaje funcional en la familia LISP, también se escribe dinámicamente.

Las características como el soporte STM le dan el mejor soporte de concurrencia listo para usar , mientras que Scala requiere una biblioteca de terceros como Akka para duplicar esto.

Sintácticamente, también es el más alejado de los tres lenguajes del código típico de Java.

También tengo que revelar que estoy más familiarizado con Scala :)

¿Puede alguien explicar las principales diferencias entre Scala, Groovy y Clojure? Sé que cada una de estas compilaciones se ejecuta en la JVM pero me gustaría una comparación simple entre ellas.


Estoy leyendo el libro Pragmatic Programmers "Groovy Recipes: Greasing the wheels of Java" de Scott Davis, Copyright 2008 e impreso en abril del mismo año.

Está un poco desactualizado, pero el libro deja claro que Groovy es literalmente una extensión de Java. Puedo escribir código Java que funcione exactamente como Java y renombrar el archivo * .groovy y funciona bien. Según el libro, lo contrario es cierto si incluyo las bibliotecas requeridas. Hasta ahora, la experimentación parece confirmar esto.


Obviamente, la sintaxis es completamente diferente (Groovy es el más cercano a Java), pero supongo que no es lo que estás pidiendo.

Si está interesado en usarlos para crear secuencias de comandos de una aplicación Java, es probable que Scala no sea una buena opción, ya que no hay una manera fácil de evaluarla desde Java, mientras que Groovy es especialmente adecuado para ese propósito.


Se pueden diferenciar de dónde provienen o a qué desarrolladores se dirigen principalmente.

Groovy es un poco como la versión de scripting de Java. Los programadores de Java desde hace mucho tiempo se sienten como en casa cuando crean aplicaciones ágiles respaldadas por grandes arquitecturas. Groovy on Grails es, como su nombre sugiere, similar al marco de Rails. Para las personas que no quieren molestarse con la verbosidad de Java todo el tiempo.

Scala es un lenguaje de programación orientado a objetos y funcional, y los programadores de Ruby o Python pueden sentirse más cerca de este. Emplea bastantes buenas ideas comunes que se encuentran en estos lenguajes de programación.

Clojure es un dialecto del lenguaje de programación Lisp, por lo que los desarrolladores de Lisp, Scheme o Haskell pueden sentirse como en casa mientras desarrollan con este lenguaje.





language-comparisons