Programacion en prolog
Autor: Angel Fernández Pineda
•
Introducción o Requisitos o El entorno de desarrollo Prolog o Compatibilidad ISO-Prolog o Créditos
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 decursos 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 muestraeste 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 asuperar 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 deaplicaciones. 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 mismoprograma 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:
• •
CIAO Prolog. SWI Prolog.
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 larecursividad.
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. Transform a elcó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...
Regístrate para leer el documento completo.