Navigation  without Java Scripts

Confesiones de un programador...

¡Prolog gratis!

El lenguaje de programación más usado en los últimos años en la Inteligencia Artificial es Prolog. Aunque Lisp tiene sus adeptos, Prolog ha resultado muy poderoso en algunas ramas de la lógica, en el procesamiento del lenguaje natural y en los sistemas expertos (o basados en conocimientos). De esta manera, poco a poco en los cursos que se imparten de esta asignatura, Prolog se ha colocado cada vez más como el favorito natural.

Al contrario de Lisp (LISt Processing), que funciona bajo el paradigma del cálculo lambda, Prolog (PROgramming in LOGic), trabaja con la que se denomina lógica de predicados. Esto se acerca de manera muy familiar a la lógica formal y es por eso que programar en este último lenguaje resulta parecido a simplemente especificar el problema. Esto quiere decir que, a diferencia de otros lenguajes de programación de cuarta generación, a Prolog no hay que darle una receta de cocina, un algoritmo que haga la tarea encomendada. En lugar de eso lo que se le da es la descripción del problema y Prolog entonces busca la solución. 

Para quienes no hayan programado jamás en un lenguaje como Prolog, suena absurdo que éste resuelva el problema sin haber descrito las rutinas que lo resuelven. En realidad Prolog ya tiene un mecanismo genérico de búsqueda de respuestas, llamado algoritmo de Robinson, el cual le da la potencia necesaria para que el sistema pueda funcionar en cierto tipo de problemas específicos. Así entonces, en Prolog uno plantea la descripción del problema y entonces le preguntamos al sistema sobre resultados específicos, los cuales el algoritmo mencionado encuentra haciendo inferencias lógicas.

Pero ¿qué es una inferencia lógica? Un ejemplo sencillo debe bastar: Si decimos que Juan es hermano de Pedro, y el padre de Juan es Jorge, entonces podemos *inferir* que el padre de Pedro también es Jorge [1]. De esta manera, en Prolog le indicamos al sistema: i. la relación entre Pedro y Juan; ii. la relación entre Juan y Jorge y iii. la relación genérica de hermanos (la cual es que X es hermano de Y si el padre de X es Z y el padre de Y es Z). Entonces, dada esta información, le podemos preguntar a Prolog que nos diga quién es el padre de Pedro. Sin dar ese dato de manera explícita, el sistema (vía el algoritmo de Robinson), lo puede hallar. Es importante hacer notar que Prolog tiene implantada la lógica del tercero excluído, es decir, que para el sistema los asertos tienen un valor de verdad o falsedad, pero no hay grados intermedios en esto. Este es el tipo de lógica más sencilla que existe y es la que se estudia en la escuela preparatoria. ¿Recuerdan los silogismos y aquello de las premisas particulares y universales? Pues Prolog es la expresión en cómputo de todo este desarrollo de la filosofía.

Pero obviamente esto tiene sus bemoles. ¿Qué hay de expresiones cuyo valor de verdad se da como un expectro de posibilidades, como por ejemplo, el hecho de si va a llover hoy? Prolog directamente no las puede manejar, pero se pueden escribir las rutinas correspondientes para el manejo de incertidumbres. De ahí que algunos sistemas expertos médicos permitan a los usuarios (pacientes), decirle al sistema el grado de verdad, de certeza, del dolor que sienten o de lo mal que se encuentran.

Por eso Prolog es un lenguaje interesante que merece estudiarse. Aunque existen por ahí algunos intérpretes de Prolog gratuitos, los desarrollos más serios son comerciales y cuestan sus buenos dólares. Arity Prolog, por ejemplo, es una de las mejores implantaciones de este lenguaje (aunque extrañamente congelaba a veces la PC sin saber por qué. Lo que es claro es que su compilador es uno de los mejores que he visto en mi vida). LPA Prolog es uno de los rivales de Arity, pero no puedo hablar de él porque no lo tengo. Borland, hace algunos años, sacó al mercado Turbo Prolog, el cual más adelante, se regresó a sus autores (unos daneses), quienes ahora lo comercializan como PDC Prolog (Prolog Development Center). Hace un par de años, esta empresa sacó algo que denominó Visual Prolog. Lo hay en diferentes versiones (16 y 32 bits). Funciona bajo Windows y es sin duda un esfuerzo interesante. En su momento me hice (por alrededor de 200 dólares), de mi copia de Visual Prolog (16 bits) y créanme, mantiene la sintaxis de Turbo Prolog y le añade el elemento visual. El compilador de Visual Prolog es el más rápido que existe, aunque se ayuda de una particular sintaxis que le permite resolver el tipo de datos con los que va a tratar sin necesidad de hacer suposiciones sobre estos (de ahí que su sintaxis no sea precisamente estándar con otras implantaciones). De ahí su rapidez. He escrito un par de aplicaciones en Visual Prolog (a nivel prototipo), de las cuales hablaré en alguna otra ocasión. El asunto aquí es que me parece fundamental que la gente sepa que Prolog también funciona en la plataforma PC y más aún, dentro del ambiente Windows.

La noticia es que la empresa danesa PDC ha puesto de manera gratuita y pública su versión de 16 bits de Visual Prolog, aunque tiene una restricción fundamental: solamente puede ser usada por 30 días en su período de evaluación y después de esto ya no funciona. Después de este mes de prueba, ya cada quien decidirá si el lenguaje le convence y le sirve o lo desecha y punto final a la historia. En el primer caso, tendrá que comprar la versión completa, cuyo costo va de 200 hasta 1700 dólares, todo dependerá de si quiere la versión de 16 o de 32 bits y de las herramientas y utilerías que desee. Sé que no faltará quien busque la manera de librarse del límite impuesto de días de uso. No sé cómo funciona ese mecanismo y tampoco quiero saberlo. Lo genial es que por 30 días podemos probar Visual Prolog. La dirección en donde se encuentra es