Tabla de Contenidos
Taller de Programación Declarativa
Introducción a los Algoritmos 2009
Las clases serán los lunes en el aula D2 (laboratorio de las baterías D), en dos comisiones: comisión 1, de 11:30 a 14:30, comisión 2, de 14:30 a 17:30.
Este año vamos a ver aproximaciones distintas a la programación declarativa: programación lógica (en prolog) y programación funcional (en haskell). Este tipo de programación tiene varias diferencias con la programación imperativa que quizás muchos de ustedes conozcan (C, C++, Visual Basic, Perl).
Clases
Mar 30 | Clase 1 | Introducción a programación declarativa, introducción a prolog, átomos, sintaxis, pequeño ejemplo. |
Abr 6 | Clase 2 | Consolidación de conceptos, uso de la traza, analizando problemas. |
Abr 13 | Clase 3 | Introducción a haskell, tipos, análisis por casos, pattern matching. |
Abr 20 | Clase 4 | Repaso de programación funcional, modularización, definiciones locales. |
Abr 27 | Clase 5 | Listas y recursión lineal en haskell y prolog. |
May 4 | Clase 6 | Repaso de recursión, ejercicios de recursión. |
May 11 | Clase 7 | Parcialito 1 |
May 18 | Clase 8 | Generalización de funciones recursivas en listas y alto orden. Aplicando generalizaciones. |
Jun 1 | Clase 9 | Resolviendo problemas complejos. |
Jun 8 | Clase 10 | Parcialito 2 |
Jun 15 | Clase 11 | La Guinda |
Hay también una página con las soluciones a los ejercicios.
Programas
Intérprete de prolog (programación lógica)
Vamos a usar SWIProlog. Existen versiones para linux, windows, windows de 64 bits, mac sobre intel y mac sobre power pc.
Intérprete de haskell (programación funcional)
Vamos a usar Hugs.
Las principales distribuciones Linux (Debian, Ubuntu, Fedora y Gentoo) incluyen Hugs como un paquete de instalación.
Para los usuarios de Windows y *nix, hay versiones para bajar desde Downloading Hugs.
En Windows tenemos MinHugs una versión pequeña de solo 1.4MiB de descarga.
Bibliografía
Programación lógica
Hay varios cursos muy claros y didácticos para aprender Prolog on-line, los que más me gustan a mí (de más a menos):
- Learn Prolog Now!, en inglés (también en libro).
- curso de Inteligencia Artificial e Ingeniería del Conocimiento en la Universidad Complutense de Madrid, desde donde hay muchos links a las referencias básicas de Prolog, todos ellos actualizados. Se los resumo acá (en la página del curso está esta información ampliada):
- los mejores libros de Prolog, en inglés y castellano:
- Sterling, Leon y Shapiro, Ehud. 2001. The Art of Prolog : advanced programming techniques. MIT Press, (5th Edition 2001).
- Clocksin, William F. y Mellish, Christopher S. 1993. Programación en Prolog (traducción de “Programming in Prolog”). Gustavo Gili (en inglés, editado en Springer).
- apuntes en castellano:
- filminas de José Emilio Labra Gayo (profesor de la Universidad de Oviedo) sobre Programación Lógica Pura. 6 hojas.
- apuntes de José Emilio Labra Gayo sobre Programación Práctica en Prolog. 31 hojas.
- Guía de Francisco Gutiérrez Lopez (profesor de la Universidad de Málaga) sobre el Uso Básico de Prolog. 9 hojas.
- apuntes en inglés: los apuntes sobre prolog de Tim Smith, un profesor de un curso de prolog para inteligencia artificial en la Universidad de Edimburgo.
Programación funcional
- José Gallardo, Paco Gutiérrez y Blas Ruiz, "Una introducción agradable a Haskell versión 98", Febrero de 2001.
- Traducción de "A gentle introduction to Haskell Version 98".
- Blas C. Ruiz, Francisco Gutiérrez, Pablo Guerrero y José E. Gallardo, "Razonando con Haskell", Thompson, 2004.
- Jose E. Labra G., Introducción al lenguaje Haskell, Universidad de Oviedo, Departamento de Informática, Octubre 1998.
- un libro electrónico, on-line, con dibujitos! Learn You a Haskell for Great God!
- otro libro electrónico on-line, muy bueno (aunque sin dibujitos): Real World Haskell
- Simon Thompson, Haskell The Craft of Functional Programming, 2da edición, Addison-Wesley, 1999.
- Mucho material en inglés de Introductions to Haskell.