Conclusiones
En esta sección se detallan las lecciones aprendidas tras el desarrollo del proyecto OMI y se identifican las posibles mejoras futuras sobre el desarrollo del software.Objetivos alcanzados
Como se introdujo se ha construido un intérprete completo de un lenguaje de programación de alto nivel, capaz de describir mediante estructuras de datos el proceso de interpretación llevado a cabo. También se ha construido un cliente web capaz de interpretar estos datos y representarlos gráficamente y de forma interactiva.Se recorrido todo el proceso de desarrollo y construcción del proyecto. La documentación generada ha sido dispuesta en una plataforma web que permite su acceso y navegación de una forma fácil y cómoda.
Lecciones aprendidas
- Se ha profundizado en los estudios de los intérpretes de lenguajes de formales y los conceptos que los hacen posibles tales como los autómatas, el léxico, la sintaxis, las gramáticas, los autómatas, los árboles...
- Se han estudiado y asimilado características avanzadas de los lenguajes de programación y cómo estas se implementan.
- Se ha profundizado en otros lenguajes de programación para construir una visión amplia de características y paradigmas (PHP, Python, JavaScript, Java, Haskell, Ruby...).
- Se han afianzados nuevos conocimientos en el desarrollo C++ y algunas características avanzadas de este, como la inclusión de bibliotecas dinámicas, bibliotecas de líneas de comandos o las directivas del compilador.
- Se ha estudiado y profundizado en herramientas de compilación automática y la paquetización de binarios precompilados.
- Se ha profundizado en la instalación y configuración de servidores.
- Se han estudiado estructuras de datos estándar utilizadas en comunicaciones como JSON.
- Se ha profundizado en el proceso de desarrollo de un proyecto software y las metodologías aplicadas.
- Se ha profundizado en el desarrollo de diagramas y el lenguaje UML.
- Se han estudiado estándares ISO para asegurar la calidad de proyectos.
- Se ha adquirido conocimientos más afianzados en los distintos tipos de prueebas aplicables al software.
- Se ha profundizado en la planificación y desarrollo de tareas.
- Se ha profundizado en el desarrollo de webs dinámicas escritas en PHP.
- Se ha adquirido nuevos conocimientos en tecnologías de navegadores tales como HTML5 y JavaScript.
- Se ha adquirido destreza para el trabajo en equipo y una comunicación óptima.
Trabajo futuro
- Añadir características pertenecientes a los paradigmas abordados como número de parámetros arbitrarios, acceso a variables no locales, herencia múltiple, traits, prototipos...
- Añadir características de otros paradigmas no abordados como la programación dirigida por eventos, aspectos, lógica ...
- Añadir características avanzadas al intérprete y su funcionamiento interno como la compilación justo a tiempo.
- OMI es un lenguaje de ámbito general, pero puede ser especializado para cumplir un propósito más concreto como la explotación de servicios web o la creación de juegos.
- Desarrollar en mayor detalle una descripción del proceso de interpretación entrando en materias como el análisis léxico y sintáctico llevado a cabo.
- Integrar un DSL para la creación de gramáticas dentro del propio lenguaje.
- Construir bibliotecas de funciones útiles que añadan recursos matemáticos, de gestión de bases de datos...
