Ingeniería de Sistemas y Computación ISIS-4109 Diseño de Lenguajes Programa del Curso (2009-2) Profesor: Silvia Takahashi ([email protected]) Motivación: El problema de diseñar de lenguajes es un tema aplicable tanto en la creación de nuevos lenguajes de programación como en otros dominios. Cuando se define un nuevo modelo o representación, es necesario definir formas de referirse a estos nuevos conceptos y poder razonar sobre ellos: es decir se debe definir un lenguaje. Algunos dominios en los que es aplicable esta teoría son los siguientes: descripción de modelos, procesos, interfaces, protocolos, etc. Los lenguajes de propósito específico pueden usarse como generadores de aplicaciones para poder agilizar la puesta en marcha de sistemas acercando más al usuario final a este proceso. Objetivo: El objetivo del curso es enseñar los conceptos básicos de diseño de lenguajes. Al final del curso el estudiante debe entender el problema de la definición de un lenguaje: sintaxis y semántica. Debe estar en capacidad de definir un lenguaje definiendo primero un modelo y una sintaxis para su representación. Adicionalmente, debe estar familiarizado con ciertos problemas que se presentan al implementar lenguajes de programación. Los Grandes Temas que se tratarán son los siguientes: 1. Diseño e Implementación de Lenguajes de Programación (8 semanas) a. b. c. d. e. f. Qué es un lenguaje de programación Repaso de Sintaxis y Semántica Máquinas Abstractas Implementación de Lenguajes Procedimentales Implementación de Lenguajes Funcionales Implementación de Lenguajes Lógicos 2. Diseño e Implementación de Lenguajes de Propósito Específico (7 semanas) a. b. c. d. Qué es un lenguaje de propósito específico Patrones para lenguajes de propósito específico Ejemplos de Lenguajes de propósito específico Herramientas para definir Lenguajes de propósito específico Bibliografía: El curso no tiene un texto guía. Se asignarán lecturas durante el transcurso del curso para cada tema. A continuación aparece una lista de referencias que pueden ser útiles para algunos de los temas del curso. Se publicarán en Sicua la lista de los artículos. Un buen texto que trata el tema de la primera parte del curso es: Fundamentals of Programming Languages 2nd Edition – Ellis Horowitz, Computer Science Press 1984. Es el texto clásico. Sin embargo, en la biblioteca se encuentran muchos libros que tratan el tema bastante bien. Otro Texto Clásico: Programming Languages – Design and Implementation – T. W. Pratt, M.V Zelkowitz 3rd Edition, Prentice Hall 1996. Para los lenguajes de propósito específico se recomienda el libro que Martin Fowler estáescribiendo y que se publica acá: http://martinfowler.com/dslwip/. REGLAS DEL JUEGO Evaluación: Exámenes parciales 50% Parcial 1: 25% En la semana 8 Parcial 2: 25% El día del examen final Tareas y Quices: 10% Talleres y Proyectos: 40% Notas Definitivas: La asignación de la nota se determinará teniendo en cuenta el desempeño de todo el curso. Se agruparán estudiantes según la nota final y a todos los estudiantes de un mismo grupo se les asignará la misma nota. Asistencia a clase: La asistencia a clase es obligatoria. Los estudiantes deben asistir a por lo menos el 80% de las clases del semestre. Colaboración y Trabajo en Grupo: Todos los trabajos y las pruebas serán individuales al no ser que se indique lo contrario en el enunciado.