Download Universidad Nacional - Oldemar Rodríguez Rojas

Document related concepts

Ocaml wikipedia , lookup

Programación funcional wikipedia , lookup

Dylan (lenguaje de programación) wikipedia , lookup

F Sharp wikipedia , lookup

Clojure wikipedia , lookup

Transcript
Universidad Nacional
Escuela de Informática
EIF400 Paradigmas de Programación
Profesor: Dr. Oldemar Rodríguez Rojas
E-mail: [email protected]
Documentos del curso en:
www.oldemarrodriguez.com
CARTA AL ESTUDIANTE
A. Objetivos Generales
1. Estudie en detalle la evolución de los lenguajes de
programación.
2. Domine los conceptos más importantes de los paradigmas de programación funcional y de la programación lógica.
3. Estudie los conceptos avanzados del paradigma de
Programación Orientado a Objetos.
4. Use adecuadamente el Lenguaje Unificado de Modelado (UML, Unified Modeling Language) para representar jerarquías de clases.
5. Sea capaz de desarrollar un compilador de una pasada.
B. Contenido
Para lograr los objetivos propuestos estudiaremos los siguientes temas:
1. Historia y evolución de los lenguajes de programación
 Evolución de lenguajes.
 Historia de los lenguajes, FOTRAN, COBOL, Pascal, C, Modula-2, Smalltalk, ML, ADA y otros
 Flujo de control.
 Efectos de la asignación.
 Procedimientos y funciones.
 Tipos de Datos Abstractos (TDA).
2. Programación Funcional
 Scheme como dialecto de Lisp.
 Listas.
 Recursión.
 Manipulación simbólica de datos.
 Programación simbólica.
 Lenguajes funcionales para la programación de
aplicaciones científicas y simbólicas - Mathematica
3. Programación Lógica
 Introducción al Prolog.
 Cálculos con relaciones.
 Estructuras de datos en Prolog.
 Control en Prolog.
 Cortes ("Cut").
4. Tópicos especiales Programación Orientada a Objetos
 Representación en UML de las jerarquías de clases.
 Listas genéricas y polimorfismo.
 Clases parametrizadas, plantillas “Templates”.






Uso de la librería STL.
Funciones amigas.
Manejo de excepciones.
El puntero “this”.
Sobrecarga de operadores.
Consideraciones especiales sobre los constructores y destructores.
5. Compiladores e intérpretes
 Análisis del programa fuente.
 Las fases de un compilador.
 El agrupamiento de las fases.
 Construcción de compiladores.
 Definición de sintaxis.
 Traducción dirigida por sintaxis.
 Gramáticas independientes de contexto.
 Analizadores sintéticos LR.
 Análisis léxico.
 Máquinas de pilas abstractas.
 Autómatas finitos.
 Expresiones regulares en AFN.
 Uso de gramáticas ambiguas.
C. Evaluación
El curso se evaluará mediante tareas programadas, una
investigación y dos exámenes. La ponderación es la siguiente:
Actividad
Tareas Programadas
Primer Examen
Segundo Examen
Investigación
Puntaje
30
30
30
10
NOTAS:
 Este curso NO tiene examen extraordinario.
 Los trabajos se realizaran en grupos de máximo 2
personas.
D. Bibliografía
1. Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D.
Ullman. Compilers: Principles, Techniques, and Tools
(2nd Edition), Hardcover, 2005.
2. Iain Ferguson. The Schemer’s Guide, Schmers INC.
1997.
3. Matthias Felleisen, Robert Findler, Matthew Flatt and
Shriram Krishnamurthi. How to Design Programs:An Introduction to Computing and Programming. The MIT
PressCambridge, Massachusetts London, England,
2001.
4. Max Bramer. Logic Programming with Prolog. Springer,
2005.
5. Rodríguez Oldemar. "Introducción a la Programación
Orientada a Objetos en C++ en ambiente Windows".
Editorial tecnológica de Costa Rica, 1997.
6. Sethi Ravi. Lenguajes de Programación: Conceptos y
constructores. Addison-Wesley, 1992.
7. http://plt-scheme.org/ para bajar DrScheme.
8. http://www.dobrev.com/index.html para bajar Strawberry Prolog.