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

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.