2011-02-12 16 views

Respuesta

26

Sí, nuestro language comparison chart es en gran parte una broma. Especialmente la fila "No Lisp". :)

Como Stephen C señaló desde 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 son de tipo estático, pero el uso de la inferencia de tipos para reducir código hinchazón

  • tanto el apoyo cierres y más programación de estilo funcional

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

Y aquí hay algunas diferencias:

  • Gosu no soporta operador general de sobrecarga

  • Gosu no proporciona soporte sintáctica para Mónadas

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

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

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

No es una gran diferencia entre Gosu y Scala en el lado de la funcionalidad: Gosu tiene lo que llamamos un sistema de tipo abierto. Esto permite a las personas conectar recursos arbitrarios al compilador Gosu. Como ejemplo: Gosu (a partir de 0.8.5) es compatible con archivos XSD y WSDL como ciudadanos de primera clase:

http://lazygosu.org/xml.html

El Tipo de Sistema Abierto es, en el lado de la funcionalidad, el verdadero diferenciador entre Gosu y otra lenguajes JVM tipados 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 de IDE para Scala en todos los principales IDEs. 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 marco web muy completo, Lift. No soy un gran admirador de su enfoque, pero está completo y le gusta a mucha gente.

Gosu tiene un marco web, así:

http://ronin-web.org

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

Espero que ayude. De manera realista, si comenzara un proyecto hoy, probablemente iría con Scala solo por el soporte de la herramienta. Sin embargo, si desea atacar en otra dirección, particularmente si su proyecto involucra servicios web o manejo de XSD, Gosu podría ser un lenguaje gratificante para usar. A la larga, espero que Gosu sea la opción pragmática para los desarrolladores de JVM, pero solo el tiempo dirá.

+4

Carson, un comentario rápido para decir que la honestidad de sus publicaciones es apreciada. Camino a seguir. – ebruchez

+0

Agradezco especialmente su franqueza al identificar tanto las similitudes como las diferencias. Mis necesidades son mucho más en el dominio de multi-threading y el desarrollo de aplicaciones de teléfonos móviles. Y, Scala teniendo un futuro en la compilación nativa de .NET CLR es de gran interés para mí. ¿Sabes si Gosu tiene planes de compilar de forma nativa para .NET CLR? – chaotic3quilibrium

+2

Por cierto, si tiene alguna influencia en la visualización de ese cuadro de marketing, le recomiendo encarecidamente que los elimine o que agregue algunos valores donde Gosu no obtiene una marca de verificación. Mi detector de BS disparó en el instante en que vi que Gosu era el único con todas las marcas de verificación. Casi, decidí ignorar por completo a Gosu. Luego, pensé que vería qué tipo de reputación tenía aquí en SO y solo encontré dos publicaciones con la etiqueta gosu-lang. Por lo tanto, mi publicación esta pregunta SO. – chaotic3quilibrium

1

En this thread en la lista gosu-lang, Carson bruto resumirse como sigue:

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

También hay this table, pero es una de esas comparaciones de "nuestro producto es mejor que su producto"; es decir, intrínsecamente sesgado.

+0

Vi la comparación de "esta tabla" e inmediatamente fui "BS de marketing". – chaotic3quilibrium

+1

@ chaotic3quilibrium - Estoy de acuerdo. Pero la mayoría de las BS de marketing tienen un poco de verdad, y es por eso que me vinculé a ella. –

15

El Gosu comparison table es un tanto injusto Scala: La transición de Java es fácil (no hacer tienen a usar toda la fantasía Scala cosas al principio), y para los genéricos reificadas Scala no tiene una perfecta , pero una solución viable llamada Manifiestos. Por supuesto, las categorías en las que brilla Scala faltan (coincidencia de patrones, tipos de mayor grado de kinded ...)

+2

Tengo que estar de acuerdo, si solo usa esas características de Scala que también existen en Gosu, la transición de Java no es más difícil. También argumentaría que el soporte 'Dynamic' pronto en 2.9 es directamente equivalente a los tipos abiertos de Gosu. Así que eso solo deja manifiestos, un ecosistema más fuerte, un mejor soporte para la concurrencia y una tonelada de funcionalidad adicional como diferenciadores. –

+3

Nah, la función 'Dinámica' de Scala no tiene nada que ver con el Sistema de tipo abierto. El sistema de tipo abierto le permite exponer recursos que no son de Gosu ** de forma estática **. Se puede usar para _implementar_ tipos dinámicos (así como protocolos estáticos comprobados) pero es realmente una característica completamente diferente. Acepto que puedes usar un subconjunto de Scala para lograr algo cerca de Gosu. Todavía tendrá el sistema genérico más complicado y, si está buscando el código de otras personas, tendrá que confiar en sus gustos. Gosu está diseñado para ser simple y consistente. (Soy parcial, por supuesto.) –

+0

@Carson: Me interesan las métricas de rendimiento en torno a Gosu en la forma en que toma decisiones de implementación para expresar la nueva sintaxis/sematics. ¿Hay alguna lista de discusión y/o publicaciones que profundicen en el perfil de desempeño de Gosu? – chaotic3quilibrium

Cuestiones relacionadas