20 Proyecto de compiladores e interpretes desarrollandos en America Latina

El estudio científico de los compiladores ha sido históricamente escaso en los países que conforman América Latina. La mayor parte de los estudios y proyectos que han sido realizados en esta región sobre este tema ha sido como parte de trabajos de graduación, Tesis. En esta ocasión se presentan cuatro proyectos de compiladores que fueron realizados en America Latina, por miembros de distintas Universidades. Estos proyectos son: COMIC: para resolver las limitantes que el lenguaje AUTOCODE presentaba; CCMini: como un prototipo de compilador certificante; COMPIPROGRAMACIÓN y el Interprete ICH: con fines didácticos.

20.1 Introducción

Debido a la poca investigación que surge de America Latina en general, el estudio científico de compiladores es escaso. Sin embargo esto no significa que los proyectos e investigaciones relacionados con este tema sea nulo. Por lo cual en esta ocasión se presentan cuatro proyectos que surgieron en Universidades de America Latina con relación a los compiladores. El primero de esta lista se dio en 1965 y el ultimo en 2007.

20.2 Artículo

Compiladores COMIC

Este proyecto consistió en un lenguaje y compilador desarrollado por la Facultad de Ciencias Exactas y Naturales de la Universidad de Buenos Aires, Argentina entre los años 1965 y 1966, esta instigación fue liderada por Wilfred O. Durán. Denominado COMIC: COMpilador del Instituto de Calculo[3]. Este compilador y su respectivo lenguaje fue creado para resolver los problemas y limitaciones que tenia el lenguaje AUTOCODE el cual era utilizado en las maquinas Mercury en esa época, por lo que se puede decir que COMIC es un derivado de AUTOCODE. Alguno de los problemas que el lenguaje COMIC buscaba resolver fueron: - Rigidez en el nombre de variables. -Necesidad de desmembrar instrucciones en pequeños trozos para después reunirlos en lugar de usar paréntesis. -Dificultad en el uso de vectores y matrices.

Todos estas carencias salieron a relucir ya que los científicos estaban usando formulas cada vez más complicadas y AUTOCODE dejaba de ser eficiente.

En este punto se puede realzar la falta de recursos que se le da en esta región al estudio y desarrollo de compiladores, aunque esto se puede decir de toda el area científica en América latina. Al mismo tiempo que Durán y su equipo, que constaba de: sus 2 asistentes y 2 programadores temporales de la Sección Economía Matemática, realizaban COMIC, en Alemania se estaba realizando una nueva version de FORTRAN con un equipo de 1,000 programadores[6].

Otra desventaja que se presento en el desarrollo de COMIC fue la falta de documentación a la que los desarrolladores tenia acceso, ya que por la época en la que se realizo el proyecto no contaban con herramientas digitales por lo que la información era difundida por medio de revistas y libros impresos, los cuales eran escasos en este lado del mundo.

Compigramación

Es un software desarrollado por Carlos Alberto Vanegas, como trabajo de grado para optar al titulo de Magíster en Ingeniería de Sistemas en la Universidad Nacional de Colombia, Bogota D.C, en el año 2005[1]. Fue diseñado como una herramienta didáctica que permita al estudiante una mejor comprensión de la sintaxis y la semántica algoritmos plasmados en pseudocódigo. Con este objetivo, esta herramienta se separo en 3 módulos:

Módulo compilador de pseudocódigo y traductor a C++ Y JAVA

En este modulo el usuario debe de ingresar un algoritmo escrito en pseudocódigo, cuyas reglas están previamente establecidas, para después traducirlo ya sea a código Java o C++. Es decir el compilador y traductor Java y C++ toman como entrada el pseudocódigo ingresado y por medio de analizadores: Léxicos, sintácticos y semántico lo traduce. También cuenta con detección de errores.

Módulo ejecución pseudocodigo paso a paso

Este modulo permite visualizar linea por linea, la ejecución del algoritmo previamente ingresado. Así como visualizar el valor que toman en cualquier momento las variables utilizadas, por ultimo permite ver las entradas y salidas del programa. Esta parte del software tiene un gran valor didáctico ya que proporciona una herramienta visual que ayuda a la comprensión de la lógica que sigue un algoritmo dado en comparación de solo poder visualizar las entradas y salidas.

Módulo evaluador de expresiones

Como complemento, utilizando los analizadores gramaticales usados por el compilador, este modulo permite evaluar una expresión ingresada por el usuario y cuenta con una interfaz gráfica que permite ver paso a paso las acciones que hace el software para evaluar la expresión.

CCMINI, un prototipo de compiladores certificate

Este compilador fue una colaboración entre miembros de la Universidad Nacional de Río Cuarto, Departamento de Computación Río Cuarto, Argentina: Francisco Bavera, Martín Nordio, Jorge Aguirre y Marcelo Arroyo, en conjunto con: Gabriel Baum, de la Universidad Nacional de La Plata, LIFIA, La Plata, Argentina y Ricardo Medel, del Steven Institute of Technology, New Jersey, EE.UU.

Antes de continuar, es importante aclarar cual es la diferencia entre un compilador y un compilador certificante: Ademas de realizar el análisis léxico, sintáctico y semántico, un compilador certificante debe de usar información estática del comportamiento de un programa para verificar que este cumple con ciertas propiedades de seguridad y generar código certificado.

Habiendo hecho esta aclaración, podemos establecer ¿qué es CCMini? Es un compilador certificante para un lenguaje llamado “Mini”, el cual es un subconjunto del lenguaje C. Esta compuesto por:

  • Compilador tradicional.
  • Generador y Verificador de anotaciones.

Toma como entrada código escrito en lenguaje Mini y genera un AST anotado como código intermedio. Si este código no viola la política de seguridad genera si se esta en un entorno confiable: Código objeto y en un entorno no confiable: genera el código objeto y una prueba de que el código cumple con la política de seguridad.

Interprete ICH

Es un software desarrollado por Layla Hirsh Martínez, como tesis para optar al titulo de Ingeniero Informático en la Pontificia Universidad Católica de Perú, en el año 2007.

El intérprete ICH mediante el proceso de compilación genera código intermedio que luego es ejecutado por la máquina virtual de java y haciendo uso del entorno ICHelper, muestra la salida del programa elaborado, que sirvió como entrada al intérprete[4]. Fue desarrollado como una herramienta con fines puramente didácticos, no a nivel de producción. Por lo que el lenguaje ICH que utiliza es un lenguaje en idioma español, que es simple e inductivo, para evitar confusiones que pueden surgir cuando se hace uso de lenguajes de programación en idiomas extranjeros.

20.3 Conclusión

En América latina, como en muchos otro temas científicos, no hay mucha investigación en el tema de compiladores, la mayoría de investigaciones sobre este tema son tesis, lo cual limita los recursos que el investigador puede implementar en su proyecto. El desarrollo de compiladores con fines didácticos puede ser de gran beneficio para los estudiantes que van comenzando a programar, ya que aunque estos sean simples, el hecho de que utilicen un lenguaje intuitivo y sobre todo sean en español, puede ayudar en la comprensión de los conceptos básicos, que luego podrán implementar en los lenguajes habituales. A pesar de la falta de recursos para la investigación en este tema, las personas que lo han hecho, han demostrado su deseo de innovar, el caso del proyecto COMIC es una clara prueba de ello, ya que al desarrollar su propio compilador con base a uno ya existente, le dieron solución a las limitantes que la maquina Mercury presentaba para el uso que le estaban dando.

20.4 Referencias

  • [1] [C.R. Vanegas(2005).] [Compilador y traductor de pseudocódigo para la lógica de programación (CompiProgramación). Tecnura, 8(16),64-72.] Recuperado de: https://acortar.link/GJZXyV. [Último acceso: septiembre 2022].

  • [2] [Bavera, F., Nordio, M., Aguirre, J., Arroyo, M., Baum, G., & Medel, R. (2004).][CCMini: Un Prototipo de Compilador Certificante. Reporte técnico del grupo Procesadores de Lenguajes.] Recuperado de: https://acortar.link/Ymw8rF. [Último acceso: septiembre 2022].

  • [3] [G. Del Dago, , & P. SAMCA, (2012).]. [(2012). Creación de un ecosistema donde preservar el primer lenguaje y compilador argentino: un caso de arqueología computacional. Programa de Ingeniería de Sistemas y Computación de la Universidad de Rio de Janeiro.] Recuperado de: https://acortar.link/Ys2dDj. [Último acceso: septiembre 2022].

  • [4] [L. Hirsh Martínez K. (2007). ].[Intérprete y entorno de desarrollo para el aprendizaje de lenguajes de programación estructurada.] Recuperado de: https://acortar.link/47s4OT. [Último acceso: septiembre 2022].

  • [5] [W.O Duran Salvador (s.f). COMIC.].[El lenguaje de programación y compilador del instituto de calculo en 1965. Ediciones del domo.] Recuperado de: https://acortar.link/zCp6Hy [Último acceso: septiembre 2022].