Modernización de la Enseñanza de la Traducción Manuel E. Bermúdez, Ph.D. University of Florida Gainesville, FL

Slides:



Advertisements
Presentaciones similares
Compiladores e intérpretes
Advertisements

Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta
¿Compilador ? Es un traductor que convierte un texto escrito en un lenguaje fuente y lo traduce a un programa objeto en código máquina.
¿Cómo hacer para que una máquina comprenda el LN?
Facultad de Ciencias de la Computación
Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa.
MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN
SOFTWARE DE PROGRAMACIÓN
Resolución de Problemas Algoritmos y Programación
INSTITUTO TECNOLOGICO DE MINATITLAN
Unidad 1. Introducción al proceso de compilación.
Ingeniería en Computación M. en C. J. Jesús Arellano Pimentel
Procesadores de Lenguajes I
Tema 1 Introducción a la programación (Lenguaje java).
Programación 1 Introducción
Teoría de lenguajes y compiladores
Seminario-Taller Como escribir, presentar y publicar resultados científicos 07, 08 y 09 de Febrero, 2011.
«Desempeño del profesor en formación en la competencia pedagógico-didáctica de planificación de la enseñanza: el caso de los estudiantes de Pedagogía Educación.
Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.
Sistemas Evolutivos Introduccion.
ALGORITMOS, LENGUAJES Y TECNICAS DE PROGRAMACION
TRADUCTOR DE UN PROGRAMA
Paradigmas de Programación
CONDICIONES DE LA MATERIA
M.C. Meliza Contreras González
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
ANALISIS SINTACTICO Parte I
Resumen de Compilación Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Traducido por Christian Torres Universidad Ricardo.
DISEÑO INSTRUCCIONAL DE LA ASIGNATURA TPM POR: ESTEBAN ESTRADA TORO.
Clasificación de Gramáticas y Manejo de Errores
SEMINARIO DE INVESTIGACIÓN
Procesadores de Lenguajes
Introducción al Análisis Sintáctico
Alcance Dinámico La Asociación Actual para un Nombre dado es el encontrado recientemente durante la ejecución, y no a sido destruido aun por el retornado.
Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse.
INVESTIGACION DE OPERACIONES
Compiladores Ingeniería en Computación M. en C. J. Jesús Arellano Pimentel.
Programación de Sistemas
Universidad Tecnológica de la Mixteca Instituto de Electrónica y Computación El Software Libre, una Alternativa para el Desarrollo de Aplicaciones en la.
Tema 1. Introducción y Conceptos Básicos
FUNDAMENTOS DE PROGRAMACION
TALLER 5 Desarrollo Capítulo II - Parte Pedagógica Curricular Adrián Villegas Dianta.
COMPILADORES DIANA ROCIO OLAYA MESA.
Metodología para la construcción de programas
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
 Un LENGUAJE DE PROGRAMACION es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas al cabo por maquinas como las computadoras.
INFORMATICA VII (Programación e implementación de sistemas)
Parte I. Estructuras de Datos.
Representación de Algoritmos
Unidad 1. Introducción a los Compiladores.
Lenguajes de Programación
ESTRATEGIA DE AULA PARA PRIMARIA
Compiladores Ingeniería en Computación M. en C. J. Jesús Arellano Pimentel.
UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
ESCUELA NORMAL “PROF. DARÍO RODRÍGUEZ CRUZ” Licenciatura en educación preescolar Alumnas: *Mayra * Monserrat * Idalia *Cinthia Curso: las TIC en la educación.
Compilado por: Ramiro Aduviri Velasco La Paz - Bolivia.
Procesadores de Lenguajes
III. DESARROLLO DE SISTEMAS.. Podemos definir el desarrollo de sistemas informáticos como el proceso mediante el cual el conocimiento humano y el uso.
Naime Cecilia del Toro Alvarez
Alexis J. Romero José A. De Vincenzo DESARROLLO DE UN SOFTWARE EDUCATIVO DE APOYO A LA LÓGICA CUANTIFICACIONAL, CONJUNTO, RELACIONES Y FUNCIONES DE LA.
Programación de Sistemas
Autómatas y Compiladores. Segunda Semana. Ricardo Vargas Del Valle A35469.
FUNDAMENTOS DE PROGRAMACIÓN
Fundamentos de Programación Unidad I Conceptos Básicos.
LENGUAJE DE PROGRAMACIÓN PARA JUEGOS Integrantes: Ruiz José Vargas Mary.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
1º MOMENTO Descripción del Proyecto General y de las actividades previstas en Matemática.
Autómatas y Compiladores. Primera Semana. Ricardo Vargas Del Valle A35469.
COMUNICACIÓN Y TICS KÁROL FERNANDA BARRAGÁN M. JENNYLITH DAYANA ARDILA P. WENDY PAOLA PINTO F.
Transcripción de la presentación:

Modernización de la Enseñanza de la Traducción Manuel E. Bermúdez, Ph.D. University of Florida Gainesville, FL Año Sabático en ULA, Mérida, Venezuela

CIESC, La Paz, 30 de setiembre, Resumen s La declinación del curso tradicional de compiladores. s ¿Por qué reformar el curso ? s El nuevo diseño del curso: –Objetivos. –Reorganización del material. –Contraste con el diseño antiguo. s Aplicaciones.

CIESC, La Paz, 30 de setiembre, Objetivos del curso tradicional de compiladores s 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. s Implementar (parte de) un compilador.

CIESC, La Paz, 30 de setiembre, El curso tradicional de Compiladores s Hasta hace algunos años, se consideraba “indispensable”. s En declinación hoy día, en muchos programas. –Se ofrece menos a menudo. –Hay menos instructores. –Hay menos estudiantes.

CIESC, La Paz, 30 de setiembre, Razones para la declinación s Madurez del área. s Proliferación de lenguajes y paradigmas, cursos en estos temas son más frecuentes. s Curriculum ACM 2001: Profesora Mary Shaw (CMU): termodinámica vs. diseño de calderas, principios vs. artefactos. Compiladores y Sistemas Operativos son artefactos dinosaurios. s Muy pocos graduados diseñan o mantienen compiladores. s Cada día hay menos profesores en el área (fuga a Microsoft ).

CIESC, La Paz, 30 de setiembre, Problemas con el curso tradicional de compiladores s El curso se considera obsoleto. El material ya no se considera indispensable. s El material se considera “especializado”, “opcional” en el curriculum. s El objetivo de construir un compilador “de verdad” se considera obsoleto.

CIESC, La Paz, 30 de setiembre, Problemas con el curso tradicional de compiladores (cont.) s El proyecto no compagina con el material del curso. s Trabajo en equipo en el proyecto es frustrante: para implementar una fase, se necesita saber de las demás fases. s Curso “novela de misterio”. s Un curso “esotérico” y “difícil”. Poco popular.

CIESC, La Paz, 30 de setiembre, Problemas con el curso tradicional de compiladores (cont.) s El libro de texto: Construcción de Compiladores: Principios, Técnicas y Herramientas, Addison-Wesley, 1986, segunda (última) edición, Aho, Sethi, Ullman. s Todos están de acuerdo (incluyendo los tres autores): el libro es demasiado grande, y carece de pedagogía. No habrá tercera edición.

CIESC, La Paz, 30 de setiembre, Problemas con el curso tradicional de compiladores (cont.) s Todos los demas libros (SÍ, TODOS) son la versión resumida favorita del autor, del material en el Dragón Rojo. s Los mismos temas, en el mismo orden. s Profesores (des)enfatizan sus temas favoritos (o los que conocen). s Mala pedagogía.

CIESC, La Paz, 30 de setiembre, ¿Por qué reformar el curso de compiladores ? s El curso agoniza, pero no muere. s 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.

CIESC, La Paz, 30 de setiembre, Por que reformar el curso de compiladores ? s El curso necesita la transición filosófica de “artefacto” (compilador) a “mecanismo” (traductor). s HAY QUE HACER ALGO CON EL CURSO, y abolirlo no es una opción.

CIESC, La Paz, 30 de setiembre, El Nuevo Diseño s Se llamará TRADUCCIÓN DE LENGUAJES. s Orientado hacia el proyecto. s Sólo el material teórico relevante. s NO se implementa un compilador desde cero. s Se EXTIENDE un compilador dado, para un lenguaje imperativo mínimo: variables enteras, ‘+’, ‘-’ unario, ‘<=‘, asignación, secuencia, ‘if’, ‘while’.

CIESC, La Paz, 30 de setiembre, Gramática de “Tiny” s Tiny -> 'program' Name ':' Dclns Block '.' s Dclns -> 'var' (Dcln ';')+ s -> s Dcln -> Name list ',' ':' Type s Type -> 'integer' s -> 'boolean‘ s Block -> '{' Statement list ';' '}' s Statement -> Name '=' Expression s -> 'output' '(' Expression ')' s -> 'if' '(' Expression ')' Statement s 'else' Statement s -> 'while' '(' Expression ')' Statement s -> Block s Expression -> Term s -> Term '<=' Term s Term -> Term '+' Primary s -> Term s Primary -> '-' Primary s -> 'read' s -> Name s -> ' ' s -> '(' Expression ')' s Name -> ' '

CIESC, La Paz, 30 de setiembre, El Nuevo Diseño DISEÑO VIEJODISEÑ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).

CIESC, La Paz, 30 de setiembre, 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 (???)

CIESC, La Paz, 30 de setiembre, 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.

CIESC, La Paz, 30 de setiembre, El Diseño Nuevo s 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: u Análisis sintáctico (regular y libre de contexto) u Experiencia con un programa GRANDE: abstracción, mantenimiento. –El objetivo NO es enseñar diseño de compiladores de producción.

CIESC, La Paz, 30 de setiembre, El Diseño Nuevo s Se elimina generación de código final. s Se elimina optimización de código. s Se elimina el problema de asignación de registros. s Se eliminan valores de punto flotante. s Se utiliza una máquina virtual (JVM ?)

CIESC, La Paz, 30 de setiembre, Objetivos Diseño viejoDiseño nuevo 1.Fases del compilador Modelos matemáticos.2. (simplificados, luego...) 3. Herramientas Análisis léxico Análisis sintáctico Semántica estática 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. 

CIESC, La Paz, 30 de setiembre, El Sistema Actual s Escrito en C, traducido de Pascal . s Corre bajo UNIX y Linux. s Utiliza lex y yacc (con un pre-procesador). s 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).

CIESC, La Paz, 30 de setiembre, El Sistema Actual

CIESC, La Paz, 30 de setiembre, Investigación Previa s Resultados de investigación : –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...

CIESC, La Paz, 30 de setiembre, Investigación Previa (cont.) s Resultados de investigación : –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.

CIESC, La Paz, 30 de setiembre, Actividades Recientes s Tema retomado en 2001: curso de compiladores en peligro de extinción ! s Proyecto financiado por SUCCEED en verano 2001: nuevas ideas en torno a recomendaciones ACM s : Estudiantes (2 M.Sc., 1 Ph.D.) implementando el sistema en: –Java, C++, C#. (Windows,.NET) s Fulbright, para ULA, Mérida, Venezuela,

CIESC, La Paz, 30 de setiembre, Planes para s Concluir implementaciones en Java, C++, C#. Apoyo financiero de Microsoft. s Artículo presentado 1/2003: SSGRR. s Escribir propuesta de libro de texto, y capítulos muestra. s Diseñar contenido del libro en detalle. s Negociar con casa editoriales

CIESC, La Paz, 30 de setiembre, Planes para en la ULA s Primer semestre: un seminario de pos- grado: buscar y describir aplicaciones fuera del área de compilación. s Segundo semestre: impartir el nuevo curso, para estudiantes de pre-grado. s A traves del año, escribir el libro de texto. s Hora de cerrar 20 años de estudio de compiladores. 

CIESC, La Paz, 30 de setiembre, ¿ Preguntas ?