Introducción
Este tutorial de programación en Prolog
constituye la primera entrega de una serie de cursillos
orientados
a aquellas personas que desconocen la programación declarativa
relacional y su lenguaje rey: Prolog. Hablamos de
programación lógica relacional porque existe toda una
gama de lenguajes que siguen este paradigma, si bien, casi todos ellos
están basados en Prolog. Quizás, La familia más
importante de estos lenguajes sean los denominados CLP -
Constraint Logic Programming, que son exactamente iguales
a Prolog pero con la capacidad adicional de resolver sistemas de
ecuaciones.
El conjunto de cursos está organizado de forma que
las características más básicas y sencillas
se encuentran en este primer tutorial. El resto
se adentra en cuestiones avanzadas que raramente
se suelen explicar pero cuyo dominio es fundamental
para trabajar profesionalmente con Prolog, y para obtener ventajas
sobre otros paradigmas de programación.
¿ Es usted escéptico respecto a Prolog ?.
El típico
tópico muestra este lenguaje como poco eficiente, sin
utilidad práctica alguna, complicadísimo de
manejar, etc. Sin ánimo de ofender, si Ud. encuentra Prolog
imposible de entender, es que Ud. no es un profesional de la
informática, porque la verdad es que requiere una cierta
formación en lógica matemática y en
técnicas de programación. Pero no se desanime, porque otro
objetivo de este curso es ayudarle a superar todos los desafios.
En cuanto a la escasa utilidad práctica de Prolog
podemos citar:
-
Generación de CGI's.
-
Acceso a bases de datos desde páginas Web.
-
Paralelización automática de programas.
-
Programación distribuida y multiagente.
-
Sistemas expertos e inteligencia artificial.
-
Validación automática de programas.
-
Procesamiento de lenguaje natural.
-
Prototipado rápido de aplicaciones.
-
Bases de datos deductivas.
-
Interfacing con otros lenguajes como Java y Tcl/Tk.
- ... (la lista es interminable) ...
En cuanto a la excasa eficiencia hemos de admitir que Prolog
es aproximadamente diez veces más lento que el lenguaje
C. Pero también hemos de admitir que un programa en
Prolog ocupa aproximadamente diez veces menos, en líneas de
código y tiempo de desarrollo, que el mismo programa escrito
en C. Además las técnicas de optimización
de código en Prolog apenas están emergiendo en estos
momentos. Algunos experimentos (optimistas) hacen pensar que la velocidad de
ejecución de Prolog podría aproximarse a la de C
en esta década.
Requisitos
Para hacer unos primeros pinitos en Prolog se necesita unicamente dos
cosas: un editor de texto y un entorno de desarrollo Prolog.
Como editor de texto resulta altamente recomendable el uso de
Emacs.
A continuación indicamos algunos links donde puedes descargarte
entornos de desarrollo:
Este curso también supone que el lector está
familiarizado con:
- La programación imperativa tradicional.
- Tipos abstractos de datos, como listas y árboles.
- Técnicas de programación, como la recursividad.
El entorno de desarrollo Prolog
Prolog es un lenguaje de programación seminterpretado.
Su funcionamiento es muy similar a Java.
El codigo fuente se compila a un código de byte el
cuál se interpreta en una máquina virtual denominada
Warren Abstract Machine (comúnmente denominada
WAM).
Por eso, un entorno de desarrollo Prolog se compone de:
- Un compilador.
Transforma el código fuente en
código de byte. A diferencia de Java, no existe un
standard al respecto. Por eso, el codigo de byte generado
por un entorno de desarrollo no tiene por que funcionar en el
intérprete de otro entorno.
- Un intérprete.
Ejecuta el código de byte.
- Un shell o top-level.
Se trata de una utilidad que
permite probar los programas, depurarlos, etc. Su
funcionamiento es similar a los interfaces de línea de
comando de los sistemas operativos.
- Una biblioteca de utilidades.
Estas bibliotecas son,
en general, muy amplias. Muchos entornos incluyen
(afortunadamente) unas bibliotecas standard-ISO que permiten
funcionalidades básicas como manipular cadenas,
entrada/salida, etc.
Generalmente, los entornos de desarrollo ofrecen extensiones al
lenguaje como pueden ser la programación con restricciones,
concurrente, orientada a objetos, etc.
Sería injusto no mencionar aquí el entorno de
desarrollo más popular: SICStus Prolog, si
bién, se trata de un entorno de desarrollo comercial (no
gratuito).
SICStus, CIAO Prolog, y posibiblemente otros más, ofrecen
entornos integrados generalmente basados en Emacs que
resultan muy fáciles de usar. CIAO Prolog además ofrece
un autodocumentador similar al existente para Java
además de un preprocesador de programas.
Prácticamente todos ellos son multiplataforma.
Compatibilidad ISO-Prolog
Existe un standard ISO que dicta las típicas normas con respecto
a la sintáxis del lenguaje y a las bibliotecas básicas
que se deben ofrecer. Actualmente el standard no contempla todos los
aspectos del lenguaje, y además, no todos los entornos siguen
el standard al pie de la letra. Por eso, programas que funcionan en
unos entornos podrían no funcionar en otros, o lo que es peor,
funcionar de forma diferente.
Todos los ejemplos que aparecen en este curso siguen el standard
ISO-Prolog salvo que se especifique lo contrario. En cualquier caso
debe consultar la documentación de su entorno de desarrollo
puesto que pueden existir pequeñas variaciones con respecto
a su uso.
Los principales investigadores de la tecnología Prolog son
los suecos y los españoles. Sin embargo, los españoles
no tenemos voto en el comité de estandarización.
Créditos
© Copyright 2000-2001
Angel Fernández Pineda.