¿Cuáles son las ventajas de Ceilán sobre Java? [cerrado]

11

Buscando los recientes y poderosos lenguajes de programación por Internet, me encontré con Ceilán. Me detuve en ceylon-lang.org y dice:

Ceilán está profundamente influenciado por Java. Verás, somos fanáticos de Java, pero conocemos sus limitaciones al revés. Ceylon mantiene los mejores bits de Java, pero mejora cosas que, según nuestra experiencia, son molestas, tediosas, frustrantes, difíciles de entender o propensas a errores.

¿Cuáles son las ventajas de Ceilán sobre Java?

Anuj Balan
fuente
1
Hmmmm, revisé su sitio y no encontré ninguna explicación convincente de por qué me gustaría cambiarme a Ceilán desde Java ... es bastante cierto, todavía están en la fase inicial, por lo que tal vez no quieran aumentar la publicidad demasiado pronto. y luego decepcionar ...
Péter Török
1
Mmm, pensé que era un lenguaje más por parte de un programador demasiado entusiasta (no es que haya nada de malo en eso: P), pero veo que la fama de Gavin King de Hibernate está en el equipo, lo cual es tranquilizador. Aún así, no veo quién elegiría Ceilán sobre otros idiomas como Scala, Groovy o Clojure.
Andres F.
1
@AndresF. Parece que es un proyecto de Red Hat. Debería garantizar cierta tracción, pero como siempre es difícil decir si se mantendrá todo el tiempo que el resto de nosotros quiera. Java ha demostrado ser compatible con versiones anteriores durante los últimos 16 años, eso es difícil de superar por ahora.

Respuestas:

27

Ceilán parece un lenguaje agradable y divertido, pero diría que tiene relativamente pocas "ventajas" sobre Java.

Creo que tiene una sintaxis más agradable y algunas características de lenguaje más "modernas", aunque esto es subjetivo y diría que deberían ser factores relativamente menores en la elección de un lenguaje de programación.

Factores mucho más importantes al elegir un idioma / plataforma para un proyecto serio:

  • ¿Le permite desarrollarse en un mejor paradigma para su problema dado? (no, Ceylon es claramente otro idioma en el espacio OOP similar a Java estáticamente sobrepoblado. Contraste con, por ejemplo, Clojure, que se dirige al espacio funcional del lenguaje o Groovy, que es un lenguaje OOP JVM muy dinámico, por lo que abordan diferentes nichos )
  • ¿Tiene un mejor ecosistema de biblioteca? (no hay posibilidad ... Java no tiene parangón en este sentido. En el mejor de los casos, probablemente termines usando las bibliotecas Java de Ceilán)
  • ¿Puedes conseguir desarrolladores más calificados? (poco probable, actualmente hay pocas personas que usan Ceilán e incluso si lo hicieran, habría una gran curva de aprendizaje para escalar)
  • ¿Tiene mejores herramientas? (no, las herramientas Java son muy completas y maduras)
  • ¿Te hace más productivo? (discutible: tiene algunas características agradables de lenguaje productivo, pero combinado con la curva de aprendizaje y los efectos de herramientas, en realidad podría terminar detrás)
  • ¿Proporciona un mejor rendimiento? (no, el JVM está extremadamente bien optimizado para Java, es una decisión difícil para cualquier otro lenguaje JVM para superarlo. Scala se acerca, pero eso es después de muchos años de ajustes ...)
  • ¿Admite más plataformas de destino? (no, es un lenguaje JVM, exactamente igual que Java)
  • ¿El código será más fácil de mantener? (probablemente no, Java ha resistido la prueba del tiempo aquí precisamente porque es relativamente estable, maduro y no tiene muchas características avanzadas de lenguaje que puedan confundir a los futuros mantenedores)
  • ¿Existe una comunidad grande, activa y útil? (no, al menos no en comparación con Java u otros lenguajes JVM grandes como Scala, Clojure, Groovy, etc.)

En general, ciertamente alentaría a las personas a experimentar con Ceilán y divertirse con él desde una perspectiva de aprendizaje.

Pero actualmente no veo ninguna ventaja convincente que haga que un gran número de personas quiera cambiar a él (o elegirlo antes que otros lenguajes JVM como Clojure, Scala, JRuby o Groovy).

mikera
fuente
2
"¿Admite más plataformas de destino?" SÍ, puedes compilar Ceilán a Javascript.
Chochos
1
Además, creo que su evaluación de algunos puntos no es realmente válida ya que Ceilán aún no está terminada, por lo que no tiene sentido compararlo con otros idiomas que han existido durante años.
Chochos
55
@Chochos: también puede compilar Java a JavaScript (Google Web Toolkit hace esto), por lo que no es nada además de lo que hace Java. Estoy de acuerdo en que Ceilán claramente no está terminado, sin embargo, creo que todos mis puntos son válidos ahora y es poco probable que cambien en los próximos 5 años al menos (incluso si el equipo de Ceilán termina toda su hoja de ruta actual).
mikera
1
@mikera Chochos tiene toda la razón. Ceylon admite la compilación a JS por diseño / de forma nativa. También se puede compilar en código nativo. Creo que esta es una gran diferencia, entonces "hay en algún lugar una herramienta, por alguien, que hace lo mismo, si ..."
Gundon
55
@mikera - El "hay una gran comunidad" es, por supuesto, un argumento asesino para todos y cada uno de los próximos idiomas. Dicho esto, una comunidad pequeña a menudo es más receptiva y competente. (Miren qué mensaje sobre Java está escrito todo el día allí en SO ...)
Ingo
3

Tiene algunas características agradables que no se encuentran en Java:

  1. Genéricos Reificados
  2. Inferencia de tipo
  3. Mixins (aunque esto viene en JDK8)
  4. Tipos de unión e intersección (que es realmente genial y no se encuentra en muchos idiomas)
  5. "Funciones de orden superior" (aunque no funciona del todo como objetos de primera clase)
  6. Cierres (también en JDK8)
MebAlone
fuente
3. Los métodos de defensa en JDK8 pueden ofrecer algunas de las funcionalidades de los mixins, pero no se acercan ni a los mixins ni a los rasgos. 4. Los tipos de unión e intersección son un concepto extraño para mí. Tengo problemas para entender el valor agregado. AFAIK solo le ahorra algo de esfuerzo de escritura cuando no tiene que definir una interfaz que combine otras dos interfaces. Aparte de eso, estoy seguro de que Java nunca tendrá una función avanzada en Scala / Kotlin / Ceylon / lo que sea que sea un problema para la compatibilidad con versiones anteriores binarias. Entonces, abandonar Java como con Ceilán tiene alguna justificación.
OlliP
@OlliP Realmente no le gustaría definir todos los tipos de unión e intersección que genera el compilador. Java tiene tipos de intersección, pero solo como argumentos genéricos. Convierte los tipos de unión a algún supertipo común, lo que conduce a mensajes divertidos del compilador ("y captura de?"). Los tipos de unión también se usan para la nulabilidad, que es bastante superior a Java nulo y opcional.
maaartinus
2

Por lo que he notado, una de las mayores diferencias entre Ceylon y otros lenguajes JVM "creados por pasatiempos" es que estará respaldado por Red Hat / JBoss. Así que obtendrá un conjunto de herramientas realmente agradable integrado en JBoss Tools / Developer Studio, buenas interacciones con JBoss AS / Gatein Portal y todo el Midleware / JEE 6 / BRMS. Por lo tanto, es posible que, en algún momento, desarrolle aplicaciones de Ceilán completas en JSF, portlets muy productivos con un "cambio y actualización de ciclos" de PHP y demás.

Como la mayoría de los lenguajes basados ​​en JVM, no lo veo como un reemplazo para Java para proyectos que necesitan bases de código enormes, sino para algunos proyectos pequeños a medianos, especialmente una vez que son muy modulares (como CRUD-intensivo, portlets, etc. ) Creo que será muy bien recibido en el mundo web, especialmente por los fanáticos de JBoss.

Eduard Korenschi
fuente
1
"Ceylon y otros" lenguajes JVM creados por hobby ". ¿Entonces Scala y Kotlin son lenguajes creados por pasatiempos?
OlliP
Creo que la forma en que Ceylon IDE crea definiciones de módulos para usted cuando crea un proyecto de Ceilán es una inspiración para Jigsaw. El IDE de Ceilán facilita al usuario la modularización. Con OSGi es muy engorroso ya que tienes que jugar con complementos de Maven y varios parámetros. Supongo que la gente de Jigsaw en Oracle se dará cuenta de la integración inteligente de la herramienta fácil de usar en el IDE de Ceilán y tratará de producir algo similar para Jigsaw.
OlliP
1

Creo que Ceilán es interesante en muchos sentidos. Y tal vez estén en la forma en que necesita apartarse de Java de alguna manera si desea dejar atrás algunos problemas de Java. Ceilán parece tener bastantes características de lenguaje y espero que esto haga que el compilador sea más lento como en Scala o incluso peor, porque causa tiempos de compilación que no escalan con el tamaño del código (vea Dos años de comentarios de experiencia de Scala ). El ritmo del equipo de desarrollo de Ceilán es bastante impresionante.

Kotlin todavía tiene 0.6 y, a juzgar por su velocidad de desarrollo en el último año, diría que está a un año de distancia de 1.0. No tiene tantas características de lenguaje como Ceylon (pero esas importantes que a Java le faltan como rasgos y métodos de extensión) y parece ser más algún tipo de Scala sin los problemas. Supongo que los tiempos de compilación escalables no serán un problema. Pero Kotlin solo puede ser un Java más agradable como Groovy. No puede proporcionar una salida de la programación de productos básicos de Java con dependencia XML, código repetitivo, manipulación de código de bytes, etc. Es algo así como Java y Scala bien hechos. Queda por ver si Kotlin o Ceilán podrán marcar la diferencia. Creo que ambos intentos valen la pena y les deseo buena suerte a ambos.

OlliP
fuente
-2

Ceylon está produciendo una especificación durante su desarrollo, como todos los grandes lenguajes JVM (es decir, todos los mencionados anteriormente, excepto Groovy) ...

Ceilán (http://ceylon-lang.org/documentation/1.0/spec)

Clojure (http://clojure.org/Reference)

Scala (www.scala-lang.org/docu/files/ScalaReference.pdf)

Java (http://docs.oracle.com/javase/specs/jls/se7/html/index.html)

JRuby sigue las especificaciones de Ruby que deben pagarse (http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579).

Vorg van Geir
fuente