temario
Temario de la Cursada
A continuación una lista de diapositivas a los temas que vemos en la materia
Unidad | Tema | Material | Ejercicios / Ejemplos |
---|---|---|---|
0 | Sistemas de Tipos | Intro a Sistemas de Tipos, Generics (?) | |
1 | Mixins | Intro a Scala, Mixins Presentacion & Apunte | Mateada, Sin City |
2 | Influencias de FP en OOP | FP + OOP (scala) | |
3 | Metaprogramación | Intro a Ruby | Metaprogramación en Ruby |
Temario Ampliado
Este es un conjunto de apuntes más completo que incluye temas relacionados a los que vemos en la materia, pero que quizás no vemos en la cursada. Aunque lo vimos otras cursadas. Sirve como referencia para entender mejor los temas
Conceptos Generales: Abstracciones y conceptos: visión general de la materia. ¿Qué entendemos por programación orientada a objetos?
Esquemas de tipado: Definición de Tipo. Tipo en el paradigma de objetos. Checkeos. Tipado estático y dinámico. Fuertemente y débilmente tipado. Tipado Nominal, Estructural y Mixto. Duck typing. Sistemas de checkeos de tipos opcionales. Dispatching & Binding. Late binding. Multiple dispatch (multimethods). Design By Contract.
Definiendo comportamiento más allá de las clases Closures. Open Clases. Mixins & Traits. Prototype-Oriented Programming. Aspect-Oriented Programming (AOP). Behavioural completeness. Revisión de los patrones de diseño.
Metraprogramación: reflection, introspection, self-modification e intercession. Meta-Objects. MOP. Bonus: Mirrors.
Programación Declarativa Concepto de declaratividad. Caracterísiticas. Implementaciones y ejemplos. Ventajas: abstracción, portabilidad, paralelismo. Relación con DSLs y metaprogramación. Lenguajes con características declarativas.
Lenguajes Específicos de Dominio: Concepto de DSL. General Purpose Language vs Domain-Specific Language. Características. Objetivos de un DSL. Tipos de DSL: Compilados, interpretados; Traductores; Embebidos. Complejidades de creación de un DSL. Modelo Semántico. Gramática: concepto, relación con modelo semántico, proceso de diseño. Validaciones y checkeos. Procesamiento: Generadores de código, Intérprete (transformaciones modelo a modelo). Editores de texto. Ejemplos de DSL: SQL, pic2plot (diagramas de secuencia), comando linux sed, TCP/IP, Ruby on Rails.Comparación con un API java. Construcción de un DSL con XText.