java scala gosu

¿Cuáles son las similitudes y diferencias esenciales entre Scala y Gosu(relacionadas con Java)?



(3)

Estoy estudiando Scala en este momento, y lo he estado haciendo durante el último mes. Hoy (a través de Twitter ) me topé con otro lenguaje que parece ser bastante similar, Gosu .

¿Cuáles son las similitudes y diferencias esenciales entre Scala y Gosu con respecto a su padre más influyente, Java? ¿Hay sitios web que comparen y contrasten estos dos idiomas?


En este hilo de la lista de gosu-lang, Carson Gross lo resumió de la siguiente manera:

La respuesta corta es que Gosu es más simple que Scala (genéricos más simples, sobrecarga limitada de operadores) pero un poco más firmemente tipificado estáticamente que, por ejemplo, Groovy.

También está esta tabla , pero es una de esas comparaciones de "nuestro producto es mejor que su producto"; es decir, intrínsecamente sesgado.


La tabla de comparación de Gosu es un tanto injusta para Scala: la transición desde Java es fácil (no tiene que usar todo el material elegante de Scala al principio), y para los genéricos reificados, Scala no tiene una solución perfecta, sino una solución viable llamada Manifiestos. Por supuesto, faltan las categorías en las que brilla Scala (coincidencia de patrones, tipos mejor ordenados ...)


Sí, nuestra tabla de comparación de idiomas es en gran parte una broma. Especialmente la fila "Not Lisp". :)

Como Stephen C señaló en mi publicación original, en general, Gosu es más simple que Scala, mientras que Scala tiene características más avanzadas que Gosu.

Scala y Gosu tienen muchas similitudes:

  • Ambos están escritos de forma estática, pero utilizan la inferencia de tipos para reducir la expansión del código

  • Ambos soportan cierres y una programación más funcional.

  • Ambos proporcionan funcionalidad adicional sobre las bibliotecas de Java existentes, especialmente alrededor de colecciones.

Y aquí hay algunas diferencias:

  • Gosu no admite la sobrecarga general del operador

  • Gosu no proporciona soporte sintáctico para Mónadas.

  • Los genéricos en Gosu son más simples que en Java (a costa de la corrección) donde son más (o al menos tan complicados) en Scala (aunque Scala hace un trabajo mucho mejor con la corrección).

  • Gosu no admite cosas como el argumento ''_'' implícito de Scala en los cierres: es más explícito en casos como este.

  • Las extensiones de Gosu a las bibliotecas principales de Java son menos dramáticas. Soldamos métodos adicionales a los tipos de Java existentes, en lugar de introducir una nueva jerarquía de tipos.

Hay una gran diferencia entre Gosu y Scala en el aspecto funcional: Gosu tiene lo que llamamos un sistema de tipo abierto. Esto permite a las personas conectar recursos arbitrarios al compilador de Gosu. Como ejemplo: Gosu (a partir de 0.8.5) admite archivos XSD y WSDL como ciudadanos de primera clase:

http://lazygosu.org/xml.html

El sistema de tipo abierto es, por el lado de la funcionalidad, el diferenciador real entre Gosu y otros lenguajes JVM tipificados estáticamente.

Dicho todo esto, la desafortunada realidad en este momento es que Scala es mucho más maduro que Gosu en algunas áreas, especialmente en herramientas. Existe un gran soporte IDE para Scala en todos los IDE principales. Tenemos un plugin de Eclipse para Gosu, pero todavía está en su infancia. Del mismo modo, nuestro plugin IntelliJ es muy nuevo.

Scala tiene un framework web muy completo, Lift. No soy un gran fanático de su enfoque, pero está completo ya muchas personas les gusta.

Gosu también tiene un framework web:

http://ronin-web.org

Me encanta el enfoque de Ronin, pero entonces lo haría, ¿no? Ronin está siendo construido por tipos que conocen muy bien a Gosu y, por lo tanto, aprovecha una gran cantidad de funcionalidad en el lenguaje.

Espero que ayude. Siendo realistas, si estuviera comenzando un proyecto hoy, probablemente iría con Scala solo por el soporte de la herramienta. Sin embargo, si desea ir en otra dirección, especialmente si su proyecto involucra servicios web o manejo de XSD, Gosu puede ser un lenguaje gratificante para usar. A largo plazo, espero que Gosu sea la elección pragmática para los desarrolladores de JVM, pero solo el tiempo lo dirá.