Puerto de Shen para Erlang
Resumen:
La evolución de las herramientas para la construcción de compiladores e intérpretes posibilita ahora desarrollarlos de forma fácil. Este motivo, sumado a la mejora en la capacidad de procesamiento de las computadoras, permitió el desarrollo de varios nuevos lenguajes, tanto de propósito general como de dominio específico, que ahora se pueden utilizar en ambientes de producción para aplicaciones de uso práctico. La creación de nuevos lenguajes trae consigo nuevos problemas, fundamentalmente de portabilidad, donde los programas escritos en estos lenguajes deben interactuar con programas, lenguajes, sistemas operativos y arquitecturas prexistentes. Para solucionar este problema, muchas veces se definen nuevos lenguajes intermedios con un número reducido de primitivas y sintaxis abreviadas (también llamados kernels) para facilitar la compilación y lograr “portar” el lenguaje original a distintos otros lenguajes y plataformas. Esta forma de “portar” el lenguaje utilizando un lenguaje intermedio reducido se hace a través de la construcción de “puertos”. Un “puerto” ejecuta el código intermedio sobre una plataforma particular, por lo que depende de esta plataforma, pero es fácilmente construido debido a la simplicidad del lenguaje intermedio. Cada puerto que se crea para ejecutar el lenguaje intermedio extiende la portabilidad del lenguaje original. El propósito de este trabajo es mostrar el proceso de construcción de un puerto de un nuevo lenguaje llamado Shen, diseñado para ser fácilmente portable a través de un lenguaje intermedio llamado K λ utilizando Erlang como el lenguaje al que se “porta”. Todos los conceptos, técnicas, decisiones tomadas y pasos necesarios para la construcción del puerto están fundamentados utilizando el modelo computacional de una formalización de K λ y Erlang. Esta formalización es la contribución principal de este trabajo.
2018 | |
LENGUAJES DE PROGRAMACIÓN PROYECTOS-ID COMPILADORES |
|
Español | |
Universidad ORT Uruguay | |
RAD | |
http://hdl.handle.net/20.500.11968/3863 | |
Acceso abierto |