Modernizaci - PowerPoint PPT Presentation

About This Presentation
Title:

Modernizaci

Description:

Title: Training Author: Agam Last modified by: Manuel E. Bermudez Created Date: 6/2/1995 10:16:36 PM Document presentation format: On-screen Show Other titles – PowerPoint PPT presentation

Number of Views:118
Avg rating:3.0/5.0
Slides: 28
Provided by: Agam69
Learn more at: https://www.cise.ufl.edu
Category:

less

Transcript and Presenter's Notes

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

2
Resumen
  • 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.

3
Objetivos 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.

4
El 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.

5
Razones 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 ?).

6
Problemas 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.

7
Problemas 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.

8
Problemas 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.

9
Problemas 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.

10
Por 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.

11
Por 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.

12
El 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.

13
Gramá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'

14
El 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).

15
El 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 (???)
16
El 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.
17
El 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.

18
El 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 ?)

19
Objetivos
  • 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.?

20
El 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).

21
El Sistema Actual
22
Investigació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 ...

23
Investigació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.

24
Actividades 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.

25
Planes 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 ?

26
Planes 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 ?
Write a Comment
User Comments (0)
About PowerShow.com