Tutorial básico de programación en Prolog

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.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR