Título: April - Un compilador de Prolog para .NET Marco de Trabajo: MAESTRIA Área de desarrollo: Componentes, Objetos, Arquitecturas y Lenguajes Autor: Pablo Garbusi Contacto: pgarbusi@fing.edu.uy Día: MIÉRCOLES Hora: 11:00:00 Palabras Claves: Prolog, compilador, .NET, integración Resumen: Prolog es un lenguaje de programación útil para la construcción de sistemas de inferencia o sistemas expertos. Sin embargo, a la hora de trabajar con sistemas de gestión tradicionales, las funcionalidades provistas por Prolog no resultan eficientes. Ejemplos de esto son el manejo de entrada/salida, las operaciones de acceso a bases de datos y el uso de interfaces de usuario. Por este motivo el campo de aplicación de Prolog, salvo excepciones, ha quedado reducido a áreas de aplicación de poco interés comercial. Sin embargo, con la llegada de la tecnología .NET, se abre un nuevo campo de posibilidades para Prolog. Una de las principales características de .NET, es la integración de lenguajes heterogéneos. En esta plataforma, se hace posible desarrollar un sistema escribiendo código en múltiples lenguajes, tomando lo mejor que cada uno de estos puede ofrecer. De esta forma, Prolog puede ser utilizado aprovechando al máximo sus funcionalidades, delegando a otros lenguajes, los puntos antes mencionados. En este trabajo se presenta el diseño e implementación de April.NET (A PRolog-IL Compiler), un compilador e interprete de Prolog para la plataforma .NET de Microsoft, basado en el estándar ISO Prolog (ISO/ IEC 13211-1), a fin de maximizar la compatibilidad del mismo con el código Prolog ya existente. April fue desarrollado en dos grandes módulos, un frontend y un backend. El frontend está especializado en tareas de análisis del código fuente, como ser análisis léxico, sintáctico y semántico. Asimismo, este es el encargado de la generación del código intermedio que el backend del compilador utiliza para su funcionamiento. Por su parte, la funcionalidad principal del backend es la interpretación del código intermedio generado por el frontend así como la generación de código nativo (MSIL). El componente principal del backend es una maquina virtual cuya principal tarea es la comparación y unificación de estructuras que representan programas Prolog. Internamente, el ciclo de instrucción de esta maquina virtual toma las estructuras generadas por el frontend del compilador y las compara entre si, infiriendo información en el proceso. Esta información es la que en última instancia un usuario de Prolog busca al ejecutar el programa. Por sobre estos componentes, se dispone de una herramienta de desarrollo (IDE), la cual incluye un administrador de proyectos, un editor de fuentes Prolog y una consola de uso para el interprete Prolog. Asimismo, con esta IDE puede generarse código nativo, el cual puede luego ser integrado a soluciones independientes desarrolladas para la plataforma .NET En el proceso de construcción de April se realizaron testeos en diversas áreas, como ser tiempos de carga e inicialización, volumen de carga y tiempo de respuesta para programas típicos. Los resultados obtenidos se consideraron aceptables con volúmenes medios y altos de información, aunque aun se considera que existen áreas del compilador susceptibles de mejora. Podemos entonces afirmar que se dispone de una primer versión de un compilador Prolog para la plataforma .NET. Si bien este se considera aceptable en materia de correctitud y performance, consideramos que esta puede ser mejorada en gran medida, sirviendo como base para futuros desarrollos en el área. |
Ultima modificacion 5 de Octubre 2004 16:30 |