Title: Modernizaci
1 Modernización de la Enseñanza de la Traducción
- Manuel E. Bermúdez, Ph.D.
- University of Florida
- Gainesville, FL
- manuel_at_cise.ufl.edu
- http//www.cise.ufl.edu
- Año Sabático en ULA, Mérida, Venezuela
2Resumen
- La declinación del curso tradicional de
compiladores. - Por qué reformar el curso ?
- El nuevo diseño del curso
- Objetivos.
- Reorganización del material.
- Contraste con el diseño antiguo.
- Aplicaciones.
3Objetivos del curso tradicional de compiladores
- Discutir las fases de un compilador, los modelos
matemáticos relevantes,y los paquetes
disponibles - Análisis léxico (lenguajes regulares, lex)
- Análisis sintáctico (lenguajes libres de
contexto, yacc). - Análisis de semántica estática.
- Generación de código.
- Optimización de código.
- Implementar (parte de) un compilador.
4El curso tradicional de Compiladores
- Hasta hace algunos años, se consideraba
indispensable. - En declinación hoy día, en muchos programas.
- Se ofrece menos a menudo.
- Hay menos instructores.
- Hay menos estudiantes.
5Razones para la declinación
- Madurez del área.
- Proliferación de lenguajes y paradigmas, cursos
en estos temas son más frecuentes. - Curriculum ACM 2001 Profesora Mary Shaw (CMU)
termodinámica vs. diseño de calderas, principios
vs. artefactos. Compiladores y Sistemas
Operativos son artefactos dinosaurios. - Muy pocos graduados diseñan o mantienen
compiladores. - Cada día hay menos profesores en el área (fuga a
Microsoft ?).
6Problemas con el curso tradicional de compiladores
- El curso se considera obsoleto. El material ya
no se considera indispensable. - El material se considera especializado,
opcional en el curriculum. - El objetivo de construir un compilador de
verdad se considera obsoleto.
7Problemas con el curso tradicional de
compiladores (cont.)
- El proyecto no compagina con el material del
curso. - Trabajo en equipo en el proyecto es frustrante
para implementar una fase, se necesita saber de
las demás fases. - Curso novela de misterio.
- Un curso esotérico y difícil. Poco popular.
8Problemas con el curso tradicional de
compiladores (cont.)
- El libro de texto Construcción de
Compiladores Principios, Técnicas
y Herramientas, Addison-Wesley,
1986, segunda (última) edición,
Aho, Sethi, Ullman. - Todos están de acuerdo (incluyendo los tres
autores) el libro es demasiado grande, y carece
de pedagogía. No habrá tercera edición.
9Problemas con el curso tradicional de
compiladores (cont.)
- Todos los demas libros (SÍ, TODOS) son la versión
resumida favorita del autor, del material en el
Dragón Rojo. - Los mismos temas, en el mismo orden.
- Profesores (des)enfatizan sus temas favoritos (o
los que conocen). - Mala pedagogía.
10Por qué reformar el curso de compiladores ?
- El curso agoniza, pero no muere.
- Tiene contenido importante que TRANSCIENDE el
tema de compiladores - Reconocimento sintáctico (lenguajes regulares,
libres de contexto, lex, yacc). - Traducción de lenguajes artificiales.
- Un proyecto de software de tamaño significativo.
11Por que reformar el curso de compiladores ?
- El curso necesita la transición filosófica de
artefacto (compilador) a mecanismo
(traductor). - HAY QUE HACER ALGO CON EL CURSO, y abolirlo no es
una opción.
12El Nuevo Diseño
- Se llamará TRADUCCIÓN DE LENGUAJES.
- Orientado hacia el proyecto.
- Sólo el material teórico relevante.
- NO se implementa un compilador desde cero.
- Se EXTIENDE un compilador dado, para un lenguaje
imperativo mínimo variables enteras, , -
unario, lt, asignación, secuencia, if,
while.
13Gramática de Tiny
- Tiny -gt 'program' Name '' Dclns Block '.'
- Dclns -gt 'var' (Dcln '')
- -gt
- Dcln -gt Name list ',' '' Type
- Type -gt 'integer'
- -gt 'boolean
- Block -gt '' Statement list '' ''
- Statement -gt Name '' Expression
- -gt 'output' '(' Expression ')'
- -gt 'if' '(' Expression ')'
Statement - 'else' Statement
- -gt 'while' '(' Expression ')'
Statement - -gt Block
- Expression -gt Term
- -gt Term 'lt' Term
- Term -gt Term '' Primary
- -gt Term
- Primary -gt '-' Primary
- -gt 'read'
14El Nuevo Diseño
- DISEÑO VIEJO DISEÑO NUEVO
- 1.Introducción. 1. Introducción.
- 2.Descripción del lenguaje. 2. Descripción del
traductor. - 3. Análisis léxico. 3.Traducción de operadores.
- 4. Análisis sintáctico. 4. Traducción de
instrucciones. - 5. Análisis de semántica estática. 5. Traducción
de tipos de datos. - 6. Generación de código. 6. Traducción de
subrutinas. - 7. Optimización de código. 7. Traducción de
estructuras. estáticas (vectores). - 8. Estructuras de ejecución, 8. Traducción de
estructuras - generación de código final. dinámicas
(punteros).
15El Diseño Tradicional
Análisis léxico Análisis sintáctico Semántica estática Generación de código
Operadores
Instrucciones
Tipos de datos
Subrutinas
Estructuras estáticas
Estructuras dinámicas
DISEÑO TRADICIONAL POR COLUMNA , en el orden
dictado por el compilador (???)
16El Diseño Nuevo
Análisis léxico Análisis sintáctico Semántica estática Generación de código
Operadores
Instrucciones
Tipos de datos
Subrutinas
Estructuras estáticas
Estructuras dinámicas
DISEÑO NUEVO POR FILA, en espiral, en orden
ascendente de complejidad.
17El Diseño Nuevo
- Principios filosóficos fundamentales
- Orden de eventos pedagógico ?
Orden de eventos en el
compilador. - Conservar los tópicos fundamentales en el tema de
traducción, que TRANSCIENDEN el tema - Análisis sintáctico (regular y libre de contexto)
- Experiencia con un programa GRANDE abstracción,
mantenimiento. - El objetivo NO es enseñar diseño de compiladores
de producción.
18El Diseño Nuevo
- Se elimina generación de código final.
- Se elimina optimización de código.
- Se elimina el problema de asignación de
registros. - Se eliminan valores de punto flotante.
- Se utiliza una máquina virtual (JVM ?)
19Objetivos
- Diseño viejo Diseño nuevo
- 1.Fases del compilador. 1. ?
- 2.Modelos matemáticos. 2. ? (simplificados,
luego ...) - 3. Herramientas. 3. ?
- 4. Análisis léxico. 4.?
- 5. Análisis sintáctico. 5. ?
- 6. Semántica estática. 6. ?
- 7. Generación de código. 7. ? (sólo código
intermedio) - 8. Optimización de código. 8.?
- 9. Implementar un compilador. 9. ?
(extendiéndolo) - 10. Compilador de producción. 8.?
20El Sistema Actual
- Escrito en C, traducido de Pascal ?.
- Corre bajo UNIX y Linux.
- Utiliza lex y yacc (con un pre-procesador).
- El estudiante trabaja con 4 archivos
- Especificación léxica (1 página).
- Especificación sintáctica (1 página).
- Analizador de semántica estática (400 líneas).
- Generador de código (400 líneas).
21El Sistema Actual
22Investigación Previa
- Resultados de investigación 1982-1996
- Versión sencilla y didáctica de análisis
sintáctico LL(1) y descenso recursivo. - Versión sencilla y didáctica de análisis
sintáctico LR(0), SLR(1), y LALR(1). - Publicaciones ...
- Un juego de apuntes para el curso de compiladores
en UF (ofrecido anualmente) - Los misteriosos algoritmos LR ...
23Investigación Previa (cont.)
- Resultados de investigación 1996-1998
- Intento de reforma al curso de compiladores.
- Reforma hacia C y el paradigma de la
orientación a objetos. - Licencia sabática y Fulbright, Universidad de
Costa Rica. - Período Fulbright corto (6 meses), programa de
Master joven en la UCR. - Una tesis de M.Sc. en UFL, Youli Kanev, 1997.
24Actividades Recientes
- Tema retomado en 2001 curso de compiladores en
peligro de extinción ! - Proyecto financiado por SUCCEED en verano 2001
nuevas ideas en torno a recomendaciones ACM 2001. - 2002-2003 Estudiantes (2 M.Sc., 1 Ph.D.)
implementando el sistema en - Java, C, C. (Windows, .NET)
- Fulbright, para ULA, Mérida, Venezuela, 2003-2004.
25Planes para 2003-2004
- Concluir implementaciones en Java, C, C.
Apoyo financiero de Microsoft. - Artículo presentado 1/2003 SSGRR.
- Escribir propuesta de libro de texto, y capítulos
muestra. - Diseñar contenido del libro en detalle.
- Negociar con casa editoriales ?
26Planes para 2003-04 en la ULA
- Primer semestre un seminario de pos-grado
buscar y describir aplicaciones fuera del área de
compilación. - Segundo semestre impartir el nuevo curso, para
estudiantes de pre-grado. - A traves del año, escribir el libro de texto.
- Hora de cerrar 20 años de estudio de
compiladores. ?
27 Preguntas ?