Crystal un lenguaje de programación un tanto desconocido
En el mundo de la programación existen muchos lenguajes de programación. Algunos de estos lenguajes son de uso muy extendido y podemos encontrar fácilmente profesionales cualificados.
Hay otros lenguajes mucho menos conocidos, pero no por ello son menos válidos, al contrario, son herramientas potentes de desarrollo pero que no han llegado a implantarse como herramienta de desarrollo habitual.
Crystal es uno de esos lenguajes y en el post de hoy lo intentaremos conocer un poco mejor.
Tabla de contenidos
Los orígenes de Crystal
Crystal es un lenguaje de programación de propósito general y orientado a objetos que empezó a desarrollarse sobre junio de 2011 con la finalidad de combinar la productividad que ofrecía el lenguaje de programación Ruby con la velocidad, eficiencia y seguridad que puede ofrecer un lenguaje compilado como es C.
Recordemos que Ruby se desarrolló en 1993 con el fin de mejorar las capacidades de otros lenguajes desarrollados en la misma época como son Perl y Phyton.
Crystal es un lenguaje compilado y su primer compilador fue desarrollado en Ruby si bien a posteriori en 2013 se reescribió en Crystal dotando así a Crystal de ser un lenguaje self-hosting.
Los objetivos de los desarrolladores de Crystal era que el mismo cumpliese con los siguientes parámetros:
- Sintaxis similar a la de Ruby
- Tipado estático con inferencia
- Fácil integración con C
- Evaluación y generación de código en tiempo de compilación (vía macros)
- Generación de código nativo eficiente
Veamos cada uno de estos puntos:
- Sintaxis similar a la de Ruby
La similitud en la sintaxis que usa Crystal con la de Ruby es tal que cualquiera que haya programado en Ruby puede fácilmente y en un plazo de tiempo mínimo, programar en Crystal.
Aunque la sintaxis es muy similar, Crystal ofrece otras virtudes que no posee Ruby como son la concurrencia y el paralelismo, aún en versiones incipientes pero que sin duda aportan al lenguaje todo aquello que le faltaba a Ruby para ser un lenguaje casi perfecto para el desarrollo.
- Tipado estático con inferencia
Se dice de un lenguaje de programación que usa un tipado estático cuando la comprobación de tipificación se realiza durante la compilación, y no durante la ejecución.
Comparado con el tipado dinámico, el estático permite que los errores de tipificación sean detectados antes, y que la ejecución del programa sea más eficiente y segura.
Por otro lado, la inferencia de tipos asigna automáticamente un tipo de datos a una función sin necesidad de que el programador lo escriba.
Crystal combina estas dos características en el tipado de variables, lo que hace que las capacidades del sistema de tipos esté al mismo nivel que otros como en Java o C#.
- Fácil integración con C
Es muy fácil utilizar las bibliotecas de C en Crystal, y la documentación nos brinda información sobre cómo hacerlo. Pero ¿qué sucede si desea escribir algo en C, o ya se ha escrito algo en C, que deseamos enlazar con una aplicación Crystal?
¿Y qué sucede si desea pasar una función de Crystal como una devolución de llamada que se usa en nuestro código C?
Crystal no solo llamará a nuestro código C, sino que nuestro código C también ejecutará el código que hemos escrito en Crystal. Es por esto por lo que la integración con C es muy sencilla.
- Evaluación y generación de código en tiempo de compilación
Una de las virtudes de Crystal la encontramos a la hora de compilar el código programado. Recordemos que Ruby no es un lenguaje compilado y Crystal si, lo que hace que su ejecución sea mucho más rápida.
Como hemos comentado, el compilador de Crystal está desarrollado en Crystal y el proceso de compilación de cualquier desarrollo es bastante rápido.
Durante ese proceso de compilación, se verifica el tipaje y se evalúa todo el código en busca de errores. Una vez verificado que no existen errores, el código se compila generando un código óptimo.
Como alternativa, cristal permite ejecutar el código directamente pero no es óptimo, aunque es una forma útil de depurar el código escrito.
- Generación de código nativo eficiente
Crystal corre sobre la LLVM, una tecnología que sirve como framework de compilación y puede generar código de maquina con un performance similar o superior a C.
LLVM permite optimizar todo el proceso de compilación y generar un código eficiente y óptimo cuya ejecución en cualquier plataforma resulta verdaderamente ágil.
El futuro de Crystal
Aunque lleva unos años en el mercado, Crystal puede considerarse un lenguaje joven, pero en constante evolución y que cada vez más programadores están descubriendo y usando debido a las virtudes que tiene.
Todo hace presagiar que el futuro de este nuevo lenguaje es prometedor y que en un espacio no muy grande de tiempo será uno de los lenguajes de referencia en programación.
Si has tenido ya la oportunidad de trabajar con Crystal, nos interesa conocer tu opinión.