Un breve vistazo a Bosque Language

Desde que en Marzo de este año escuchase por primera vez una referencia al nuevo lenguaje que estaba desarrollando Microsoft, Bosque Language, me propuse buscar un día con calma para leer un poco más de información. Este fin de semana por fin encontré el momento idóneo y es por ello, que escribo este post en el que cuento mis primeras impresiones.

Para aquellos que no lo sepan, Bosque Language, es un lenguaje de programación en desarrollo e investigación dirigido por Mark Marron. El lenguaje se basa principalmente en TypeScript, Node y ML, aunque tiene características de F# y también incluye conceptos de Linq. El proyecto, open source, se encuentra bajo licencia MIT y está disponible en Github.

Las principales características se encuentran detalladas en un artículo publicado en Abril por Mark Marron, en el que básicamente describe a Bosque Language como un lenguaje de programación que trata de eliminar la complejidad asociada con ciertas estructuras de otros lenguajes, para conseguir mejoras tanto en la calidad de software, como en el rendimiento.

Uno de sus objetivos, es que sea un lenguaje sencillo de entender tanto por máquinas, como por humanos. No obstante, a mí personalmente me pasa lo mismo que con F#, lo veo menos intuitivo por ser menos similar a nuestro lenguaje natural.

Algunas de las características que trae consigo son:

Los tipos de variables los engloba en concept types, tipos abstractos que nunca pueden instanciarse de forma concreta y entity declarations, tipos que se instancian, pero de los que nunca puede heredarse. Permite además la creación de tipos especiales mediante el uso de las palabras reservadas typedef, enum y ckey. También incorpora el tipo any que es un supertipo del que heredan todos, y los subtipos none y some. El lenguaje tiene además tipos primitivos como bool, int y string, junto con colecciones parametrizadas como List[T] y Map [K, V].

Permite una gran flexibilidad en los argumentos de los métodos, y elimina la necesidad de constructores.

Código sacado del artículo Regularized Programming with the BOSQUE Language

Otro de los problemas que quieren solucionar con Bosque Language, son los conflictos que se originan en las transformaciones de datos mediante la copia, mergeo o actualización. Para ello, el equipo encargado ha diseñado lo que denominan bulk algebraic data operations.

Código sacado del artículo Regularized Programming with the BOSQUE Language

Además, inspirándose en Linq, han diseñado una forma de encadenar diferentes métodos en llamadas o colecciones para realizar cálculos en diferentes pasos.

También han decidido eliminar los bucles y sustituirlos por functors para eliminar complejidad y fuentes de errores.

Código sacado del artículo Regularized Programming with the BOSQUE Language

El último punto que me ha parecido interesante es el manejo de la recursividad que lo realizan a través de la palabra reservada rec, usándola tanto delante de la definición de los métodos como en su implementación.

Aunque este lenguaje todavía está en fase experimental e irá variando con el tiempo, desde mi punto de vista, es una buena aproximación. Puede que no acabe derivando en un nuevo lenguaje al uso, pero sin duda, todo el esfuerzo tanto del equipo que lo desarrolla, como de la comunidad que lo apoya siempre podrán fusionarse con nuevas versiones de TypeScript, enriqueciendo a este lenguaje que ya nos tiene el corazón a muchos developers ganado con su tipado y escalabilidad.

Espero que esta publicación te haya sido útil. Si es así, por favor, dale un voto positivo y compártelo en tus redes sociales. Si lo deseas, puedes encontrarme en Twitter y en Linkedin.

Software Developer at Sngular. PhD on Immunology, always learning and trying to share knowledge. Microsoft Most Value Professional on Developer Technologies.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store