CC72Q Tópicos Avanzados en Lenguajes de Programación (05 UD) Semestre Primavera 2005 Profesor: Eric Tanter Requisitos : CC41A / Autor Objetivos Este curso se centra en la orientación a objetos (OOP) y su recién extensión, la programación por aspectos (AOP). El objetivo fundamental es entregar una visión clara del paradigma de OOP y de los conceptos fundamentales que llevaron a la aparición de AOP, pasando por los temas de metaprogramación y arquitecturas reflexivas. Este curso plantea el contexto y la evolución de las ideas en el área que se encuentra al limite entre lenguajes de programación e ingeniería de software. Además provee una visión “de adentro” de los lenguajes a través del estudio de sus intérpretes, incluyendo la problemática de la compilación a tiempo (JIT compilers). En este curso participará Marcus Denker (University of Berne, Switzerland), quien está involucrado en el proyecto open source Squeak desde 1998, ha trabajado con Alan Kay (inventor de Smalltalk entre otras cosas) y es especialista en compiladores JIT. Temario • OOP •Familiarización con Smalltalk y Squeak •Interpretación de lenguajes OO •Squeak avanzado (M. Denker) •Compilación JIT (M. Denker) • Metaprogramación y reflexión •Conceptos y evolución •Meta-arquitecturas de Smalltalk y Java • Programación por aspectos REFERENCIAS • • • • Conceptos Interpretación de lenguajes por aspectos Herramientas actuales Desafíos Sistema de Evaluación La evaluación incluirá: • Presentación de un artículo leído • Redacción (en grupo) de un ensayo comparativo/crítico • Diseño, implementación y reporte de un pequeño proyecto (por definir al final del curso). Calendario El semestre 2005/2 tiene 15 semanas (del 25 de Julio al 19 de Noviembre, sin contar la semana del 12 al 17 de Septiembre). Con 1,5 horas semanales para un curso de 5 UD, totalizan 22,5 horas. El curso empezará la semana del 19 de Septiembre, lo cual deja 9 semanas de clases. Para cumplir con el total de horas de un curso de 5 UD, el curso contará con 2 clases de 1,5h semanales durante 6 semanas, y una sola clase semanal durante las otras 3 semanas (6 * 3 + 3 * 1, 5 = 22, 5). Las semanas “livianas” serán determinadas durante el curso. Bibliografía [1] Tzilla Elrad, Robert E. Filman, and Atef Bader. Aspect-oriented programming. Communications of the ACM, 44(10), October 2001. [2] Adele Goldberg and David Robson. Smalltalk-80: The Language and its Implementation. Addison-Wesley, 1983. [3] Jan Hanneman and Gregor Kiczales. Design pattern implementation in Java and AspectJ. In Proceedings of the 17th International Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA 2002), pages 161–173, Seattle, Washington, USA, November 2002. ACM Press. ACM SIGPLAN Notices, 37(11). [4] Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina V. Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-oriented programming. In Mehmet Ak¸sit and Satoshi Matsuoka, editors, Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP 97), volume 1241 of Lecture Notes in Computer Science, pages 220–242, Jyväskylä, Finland, June 1997. Springer-Verlag. [5] Hidehiko Masuhara, Gregor Kiczales, and Chris Dutchyn. A compilation and optimization model for aspect-oriented programs. In G. Hedin, editor, Proceedings of Compiler Construction (CC2003), volume 2622 of Lecture Notes in Computer Science, pages 46–60. Springer-Verlag, 2003. [6] Fred Rivard. Smalltalk: a reflective language. In Gregor Kiczales, editor, Proceedings of the 1st International Conference on Metalevel Architectures and Reflection (Reflection 96), pages 21–38, San Francisco, CA, USA, April 1996. [7] Brian C. Smith. Reflection and semantics in a procedural language. Technical Report 272, MIT Laboratory of Computer Science, 1982. [8] Chris Zimmermann. Advances in Object-Oriented Metalevel Architectures and Reflection. CRC Press, 1996.