El equipo que desarrolla el lenguaje de programación Nim ha anunciado que han llegado ya oficialmente a la versión 1.0. Nim es un lenguaje compilado, de tipos estáticos, el cual se enfoca en la eficiencia, facilidad para ser leído y flexibilidad.
Los desarrolladores de Nim han dicho que la versión 1.0 marca el inicio de una base estable para las versiones futuras del lenguaje, el cual funcionará tanto para la versión actual como para las que vengan más adelante.
Nim es un lenguaje de programación fuertemente tipificado. Es orientado a objetos, pero con la composición que tiene preponderancia sobre la herencia, uno de los conceptos básicos de la programación orientada a objetos. Nim compila a C como su default, es decir quede alguna manera es un pre-procesador. Sin embargo, también puede compilar a Javascript, C++ u Objective-C.
Entre las opciones de Nim, se incluye un recolector de basura de referencia diferida, lo que es más rápido, incremental y sin pausa. Vamos, que de alguna manera podemos pensar como un recolector de basura en tiempo real en donde el tiempo de espera máximo lo da el usuario.
Esto se usa cuando se intenta liberar el espacio en donde hay variables que ya no se usan, que ya no apuntan a ninguna variable, etcétera y en el mundo moderno de la programación el recolector de basura existe, aunque en muchas ocasiones se esconde y se usa a discreción. Al día de hoy, hay más de 1000 paquetes disponibles para Nim, y los desarrolladores esperan más paquetes desarrollados en Nim ahora que están en la versión 1.0.
Pequeño pero muy útil
En una entrada del blog sobre esta nueva versión, Andreas Rumpf, el desarrollador inventor de Nim, dijo que la meta más importante es que Nim sea un lenguaje pequeño con un sistema de macros que pudiese extenderse para así usarlo con un núcleo pequeño.
El compilador y las partes la biblioteca básica (estándar) tiene cerca de 140 mil líneas de código y corre en muchos sistemas operativos. Igualmente sobre la idea de que Nim pueda compilar a C++ o a Javascript, Rumpf dice:
«Queremos enfocar a Nim sobre sus herramientas, incluyendo Nimsuggest (la forma en que Nim completa el código dependiendo del editor que se use). Personalmente pienso que la «compilación incremental»es el siguiente paso para el compilador de Nim. este tipo de compilación permite generar código mucho más rápido, resultando en expansiones de macros y otras construcciones».
Personalmente pienso que la «compilación incremental»es el siguiente paso para el compilador de Nim. este tipo de compilación permite generar código mucho más rápido, resultando en expansiones de macros y otras construcciones».
Las ventajas de Nim
Nim parece ser una buena idea de lenguaje. En esta versión se tiene:
* Generación de código ejecutable que no depende de una máquina virtual, que son ejecutables pequeños que permiten una fácil redistribución.
* Se soporta Windows, Linux, BSD y MacOS.
* Manejo de memoria diferido (a través de su recolector de basura), que soporta sistemas en tiempo real.
* Conceptos modernos como iteratores de zero-overhead y evaluación en tiempo de compilación de las funciones del usuario.
* Soporte para compilar en C, C++ o Javascript, de manera que el lenguaje Nim pueda usarse tanto en escenarios «backend»o «frontend».
He aquí un ejemplo de Nim, en donde se resuelve el cifrado César…