sábado, 9 de agosto de 2008

Prolog

Es el próximo lenguaje de programación que me he propuesto aprender en profundidad. Lo cierto es que nunca me lo había planteado, pero el hecho de que me haya quedado la programación lógica para septiembre ha impulsado mi interés por Prolog.
Decir que se trata de un lenguaje lógico, que tiene como principales herramientas la unificación y backtracking. El ser un lenguaje lógico hace que sea completamente distinto de otros lenguajes como C, Java, Pascal o Fortran, que son todos lenguajes imperativos, esto es, les vamos diciendo exactamente como van a ir paso a paso ejecutándo las instrucciones. En los lenguajes declarativos como Prolog lo que hacemos es indicarle las condiciones que se deben de cumplir para que la solución sea cierta. Un ejemplo muy sencillo sería el siguiente:

anchura(A,L):- en_anchura([A],L).
en_anchura([nodoB(I,R,D)|As],[R|L]):-
concatena(As,[I,D],AsID),
en_anchura(AsID,L).

Este simple programa de 4 líneas nos realizada la función de dado un árbol binario, obtenernos su recorrido en anchura. Quizás no es demasiado fácil verlo, pero si se sigue su traza se ve. Sino se ve claro, que sepáis que existe una herramienta muy buena SLD-Draw que representa los árboles SLD de forma gráfica.

Bibliografía:
The logic programming paradigm and Prolog
Krzysztof R. Apt. Centrum voor Wiskunde en Informatica, CWI, Amsterdam, 2001

Prolog Programming: A First Course pdf.gz
Paul Brna, 2001

Learn Prolog Now!
Patrick Blackburn, Johan Bos y Kristina Striegnitz, 2005

Prolog Programming for Artificial Intelligence (3ed)
Ivan Bratko. Addison-Wesley, 2000

Ya he tenido ocasión de echarle un ojo a éste último libro y me ha gustado bastante, así que no descartaría comprarlo si lo encuentro en Amazon o ebay.

No hay comentarios: