¿Por qué me Llama la Atención Ceylon?

Ceylon es un nuevo lenguaje de programación. Se puede ejecutar sobre la máquina virtual de Java o también puede compilar a JavaScript.

Yo sé que habrá muchos que digan "¿quién necesita un lenguaje más de programación?" y otros más que incluso digan "¿qué? ¿java? eso es tan 2001". Sin embargo, a mí me parece interesante el caso de Ceylon, a continuación elaboro más al respecto.

Filosofía de diseño

Los principios de diseño de Ceylon no giran alrededor de capacidades tecnológicas (ej. concurrencia, garbage collection) sino de como funcionan los proyectos de software, especialmente software empresarial de gran escala.  Aquí algunas de las características de este tipo de proyectos:

  • Son sistemas grandes, medidos en el orden de decenas de miles de líneas de código.
  • Los equipos de integrantes son grandes (más de 10 personas), diversos, distribuidos geográficamente y con alta rotación.
  • Una vez liberados a producción, los sistemas requieren un alto grado de mantenimiento para incorporar cambios y mejoras. Y lo más probable es que las personas encargadas de hacer esto sea un grupo distinto a quienes lo desarrollaron.

Es por ello que los principios de diseño fundamentales de Ceylon son:

  • Legilibilidad. El código en Ceylon busca ser altamente legible y fácil de entender por terceros. Ceylon no se enfoca puramente en tener una sintáxis ni breve ni elaborada, sino fácil de entender.
  • Predecibilidad. Cuando hay errores de compilación o ejecución, estos deben ser fáciles de entender y rastrear hacia su causa raíz.

Reconocimiento de debilidades de Java

Aunque Ceylon trata de aprovechar las fortalezas de Java, también reconoce sus debilidades y busca aprender de cómo hacen las cosas mejor otros lenguajes.

Un ejemplo es el caso de la modularidad. La modularidad (o falta de) siempre ha sido uno de los puntos débiles de Java. ¿Por qué tenemos que instalar el JRE completo para ejecutar un "hola mundo"? Ceylon reconoce la belleza/simplicidad de usar gemas en Ruby, o paquetes en Node, e incorpora algo similar.

Aprovechamiento de herramientas

Ceylon es un lenguaje de tipado estático (statically typed). Este tipo de lenguajes típicamente requiere más líneas de código que los lenguajes dinámicos, y por lo tanto pueden ser considerados menos productivos ("¿declarar una variable?, ¡qué flojera!"). Esto puede ser cierto cuando programas todo manualmente desde un editor de texto, pero cuando te apoyas en ambientes de desarrollo moderno el usar tipado estático se convierte más en una ventaja que desventaja. Dado que las herramientas pueden entender mejor tu código, pueden ayudarte más con él: a generarlo, depurarlo y probarlo. Y esto se extiende también al uso de librerías y frameworks. Otra ventaja de usar tipado estático es poder detectar errores desde compilación, y no hasta ejecución.

Conclusión

No estoy diciendo que Ceylon sea el lenguaje non-plus-ultra-respuestaatodostusproblemas. Simplemente me parece que su filosofía de diseño tiene puntos válidos y será interesante ver qué tal responde el mercado ante esto.

Si eres un startup o boutique y te dedicas a construir aplicaciones relativamente sencillas y con un alto énfasis en el front end, lo más probable es que Ceylon no sea para tí. Por otro lado, si eres una empresa que continuamente construye software a la medida, con arquitecturas complejas, en un contexto como el que mencioné anteriormente, y ya tienes una inversión significativa en habilidades e infraestructura de Java, creo que sería bueno que le eches un vistazo a Ceylon.

[Publicidad descarada a continuación]: Te recuerdo que Gavin King participará como keynote speaker en SG Conference & Expo 2013, donde presentará el lenguaje Ceylon. Adicionalmente, dará un taller sobre Ceylon el sábado 6 de julio, dicho taller solo está abierto a asistentes a SGCE.

Referencias

  1. Welcome to Ceylon
  2. Ceylon: Principles that guide this project