• No se han encontrado resultados

En conclusión, este proyecto servirá de ayuda a todos los futuros alumnos, haciéndoles la vida más sencilla durante la práctica de Compiladores a la vez que podrán comprender mejor algunos aspectos de la asignatura.

La asignatura de Compiladores puede resultar fascinante, pese a su dificultad. Un compilador es la base de la Informática moderna y compendrerlos ayuda a comprender muchos otros aspectos de este gran puzzle. Si no fuera por los compiladores se seguirían escribiendo programas en binario. Entre otras cosas, comprender su funcionamiento ayuda a conseguir programas muy eficientes, y eso es algo que sin duda se ve recompensado en el trabajo diario actual.

Se ha visto la necesidad de hacer este proyecto debido a la escasez de herramientas existentes actualmente. Hoy en día está de moda el lenguaje C++ y sin embargo resulta bastante complicado hacer un compilador usando este lenguaje. Existía ya alguna tabla de símbolos para C++ pero o bien era difícil de usar o bien tenía importantes problemas de diseño y falta de funcionalidad.

Además, la anterior tabla de símbolos en C (usada por la amplia mayoría de alumnos) daba demasiados warnings al compilar, algo que es siempre inquietante. Aparte, se obtenían diversas salidas anómalas inexplicables en cuanto se gestionaba incorrectamente la memoria.

Por otro lado, como esas tablas de símbolos pretendían ser muy genéricas, dirigiendo las operaciones del usuario con funciones específicas, intentar comprender su interfaz era toda una odisea y había que hacer mil artimañas para evitar salidas anómalas y para conseguir implementar algunas características esenciales como son los parámetros de las funciones.

La gente de entonces consiguió sacar adelante la práctica pese a estos inconvenientes. Pero hay que considerar que se podría haber hecho lo mismo con muchísimo menos esfuerzo y tiempo si se hubiera dispuesto de una tabla de símbolos como la que ahora se presenta como Proyecto Fin de Carrera. Es por eso por lo que aquí está este Proyecto. Sin duda habrá gente que pese a todo se empeñe en seguir usando la antigua tabla de símbolos, bien por continuar un código que dejó a medias en años anteriores o bien porque considere que compensa la gran cantidad de ejemplos para la versión antigua. Se respeta esa decisión, pero, como no podía ser de otra forma, se recomienda usar las nuevas tablas de símbolos tanto para el que quiera hacer la práctica desde el principio como para los que creen ya imposible terminar la práctica después de mil fallos y problemas con la versión anterior. Incluso si hay que readaptar el código al nuevo formato de las funciones, a la larga supondrá un ahorro de tiempo ya que ésta es más fácil de usar, tiene funciones más intuitivas y además ofrece mayor funcionalidad. En definitiva, el proyecto tiene como objetivo ahorrar tiempo al usuario y abstraerle de detalles que no habrá porqué comprender para poder usar las funciones correctamente. El resultado seguirá siendo tan bueno o mejor que el que se pueda obtener con cualquier

Hay constancia de que el primer compilador de FORTRAN tardó 18 años en programarse. Gracias a las herramientas disponibles en la actualidad, y gracias a esta nueva tabla de símbolos ahora se pueden crear en unos pocos meses, como observamos en el caso de las prácticas de la asignatura Compiladores.

Se debe recalcar que la tabla de símbolos también es necesaria para la creación de intérpretes, con la única diferencia de que no será destruida, sino que deberá mantenerse disponible durante todo el proceso en el que se este utilizando el intérprete. No consta que esta tabla de símbolos se haya usado aún para ello, pero no tiene por qué haber ningún problema en ese aspecto.

Por otro lado, está claro que la gestión de memoria será siempre uno de los grandes quebraderos de cabeza para los que se enfrentan a la creación de un compilador (o intérprete). Usar una tabla de símbolos no impide que se sigan cometiendo los típicos fallos a la hora de reservar memoria pero al menos disminuirá el tamaño del area de código a depurar en ese aspecto, que ya es un ahorro importante. Varios años de pruebas dan la tranquilidad de que el fallo no estará en el código de esta tabla de símbolos, con lo que sólo restará analizar el resto del programa.

Respecto a la depuración de errores, también cabe comentar que la posibilidad de volcar en un fichero el contenido actual de una tabla resulta una herramienta decisiva en la depuración. Cuando lo que hay almacenado deja de ser lo que se espera que esté almacenado es un buen momento para parar y analizar qué se está haciendo mal. En esos casos es también muy útil consultar los errores que generalmente habrán devuelto las últimas llamadas a las funciones de la tabla de símbolos.

Por último sólo queda recomendar a los alumnos que atiendan bien en las clases de Compiladores y en las clases de Programación para que así puedan afrontar mejor la creación de su compilador. Es especialmente importante comprender bien las diferentes etapas del proceso de compilación, el rol de la tabla de símbolos en cada momento y las entradas/salidas de cada etapa. También es importante entender lo mejor posible el lenguaje de programación en el que se va a programar el compilador, normalmente el lenguaje C o C++. Para los que se enfrentan a un nuevo lenguaje por primera vez, se recomienda practicar primero con pequeños programas que manejen la memoria. Hay miles de ejemplos en Internet.

Documento similar