SWI Prolog

SWI-Prolog
Información sobre la plantilla
Swipl.jpeg
Concepto:Aplicación de código abierto del lengueaje de programación Prololog

SWI-Prolog es una aplicación de código abierto del lengueaje de programación Prololog; es comunmente utilizado para la enseñanza y las aplicaciones de web semántica.

Reseña Histórica

Como es de código abierto se ejecuta tanto sobre Windows como Unix Linux, y algunas plataformas Macintosh. Su autor principal es Jan Wielemaker. En desarrollo ininterrumpido desde 1987, SWI-Prolog posee un rico conjunto de características, bibliotecas (incluyendo su propia biblioteca para GUI, XPCE), herramientas (incluyendo un IDE) y una documentación extensiva. SWI-Prolog funciona en las plataformas Unix, Windows y Macintosh. El nombre SWI deriva de Sociaal-Wetenschappelijke Informatica ("Informática de Ciencias Sociales"), el antiguo nombre de un grupo de investigación en la Universidad de Amsterdam en el que Wielemaker está integrado. El nombre de ese grupo se cambió posteriormente a HCS (Human-Computer Studies).

Funcionamiento

Los programas Prolog hay que editarlos con un editor de texto. Se puede usar el Notepad, pero no conviene, es bastante limitado. Hay uno que se llama emacs que viene con el SWI. También se pueden usar editores de texto de uso general, p.ej. el UltraEdit. Más abajo contamos algunos tipos sobre cómo trabajar con los editores. Conviene guardar los archivos con extensión .pl. El SWI se usa para hacer consultas a partir de un programa. Hay varias formas de "cargar" un programa en Prolog, mencionamos dos:

  1. Darle doble click al fuente .pl en el administrador de archivos o similar (p.ej. windows commander), abre el SWI y carga el programa.
  2. Abrir el SWI, y después File -> Consult.

Si hay errores en el programa, aparecen en la ventana de SWI indicando la línea de cada error. También pueden aparecer warnings, esos no importan. Si hay errores (te das cuenta porque la línea correspondiente empieza con ERROR:) el programa no se carga, hay que corregir los errores. Una vez que se cargó el programa, las consultas se hacen escribiéndolas en la ventana del SWI, al lado del prompt ?- . Recordar que las consultas también tienen que terminar con punto. Para consultas existenciales, el SWI muestra la primer respuesta. Si quiero más, pulso ; (punto y coma), si no, pulso Enter. Si pulso ; y responde No es porque no encontró más respuestas a la consulta. Si cambio un programa en la ventana del editor y lo grabo, el SWI no se entera. Para que se entere, luego de grabar el archivo modificado, poner     ?- make. en la ventana del SWI; esto hace que el SWI levante de nuevo el programa a partir del archivo .pl. Si quiero cambiar de .pl, tengo que hacer File -> Consult. No vemos en la materia cómo tener más de un .pl cargado al mismo tiempo.

Edición de archivos

Editor emacs

Para editar el código de SWI, por defecto se usa el Notepad de Windows. El SWI trae incorporado un editor con mucha mas onda: el "emacs". Este editor colorea las cláusulas de forma que las hace mucho mas claras y por lo tanto facilita la detección de errores.

Para usarlo, solo tienen que escribir:     ?- emacs.

Esto les va a abrir una ventana con el editor. Si quieren editar un archivo nuevo, pueden usarla directamente. Caso contrario, la cierran y listo. Cuando lo hayan usado una vez, los siguientes archivos que abran también los van a ver con este editor.

Si quieren que el SWI arranque siempre usando este editor, tienen que hacer lo siguiente:

  1. Desde el menú, van a "Settings -> User init file..."
  2. Si es la primera vez que lo hacen, les va a avisar que no existe un archivo de inicio y les va a preguntar si quieren crear uno. Responden que sí y siguen.
  3. Una vez que estén viendo el archivo, van a encontrar una línea como la siguiente: % :- set_prolog_flag(editor, pce_emacs). Le borran la marca de comentario (%) y queda:
    - set_prolog_flag(editor, pce_emacs). </dd>
  4. Guardan el archivo y... ¡¡listo para usar!!

Editor UltraEdit

Si no te gustó el emacs también hay otra forma de tener la sintaxis coloreada. Hay un programa muy copado para escribir código, el UltraEdit.  Lo lindo de este programa es que sirve para programar en cualquier lenguaje. Esto es posible porque tiene un archivo de texto plano donde se especifican las reglas de sintaxis de cada lenguaje. Esto significa que uno le puede agregar todos los lenguajes que quiera (bueno, en realidad se banca hasta 20, pero eso ya es bastante).  Viene con los más populares ya integrados, como C++,PHP, Java, Javascript, etc.

Para que el UltraEdit conozca la sintaxis de Prolog, se bajan este archivo de texto: prologwordfile.txt y su contenido lo copian y lo pegan al final del wordfile.txt que viene en el directorio de instalación de UltaEdit. Ahora la próxima vez que entren al programa, en View -> View as van a ver en la opción número 20 la opción del prolog.

Consideraciones

En caso de que rompan todo, guárdense antes una copia del wordfile.txt como resguardo. El UltraEdit es sólo un editor y NO un compilador. El wordfile que les damos no es exactamente para SWI Prolog sino para Sisctus Prolog, pero hasta ahora no le vi la diferencia. Si usan la extensión .pl para sus archivos de Prolog, el UltraEdit va a pensar que se trata de un archivo de Perl, asi que pueden hacer una de las siguientes cosas:            

  1. Ver abajo cómo editar el wordfile.txt para que la extensión .pl no esté asociada a Perl             
  2. Cambiar la extensión de sus archivos a .pro .             
  3. Cada vez que entran, cambiar manualmente la opción de resaltado de sintaxis. 

UltraEdit - cómo editar el wordfile.txt para que la extensión .pl no esté asociada al Perl Aunque en algún lugar de la documentación del UltraEdit está esta info, no está explícita, por lo que les enumero los pasos para que lo puedan hacer rapidito.

  1. Abrir el archivo wordfile.txt que viene en el directorio de instalación del UltraEdit con su editor de texto favorito. 
  2. Buscar la cadena "Perl". Esto los va a posicionar en la parte del wordfile donde se especifica la sintaxis de Perl. 
  3. La línea que están viendo se debería parecer a esto:       /L5"Perl" Line Comment = # Line Comment Preceding Chars = [~[^]^^$/\(] Escape Char = \ File Extensions = CGI PM PL PLX Si son piolas, ya se dieron cuenta que al final de dicha línea se especifican las extensiones de los archivos que el UltraEdit va a reconocer como de Perl. Por lo tanto:  
  4. Borar la subcadena "PL" de la línea mencionada en el punto 3.
  5. Reiniciar el UltraEdit. Ahora debería tomar automáticamente los archivos .pl como de Prolog (siempre y cuando le hayan incluído el wordfile que dice más arriba.
  6. Codificar!   CONSULTAR PROGRAMAS. Para poder consultar (correr) un programa en Prolog hay que primeramente escribir el programa en algún editor de texto, como el bloc de notas, ya teniendo esto lo guardamos con cualquier nombre y con la extensión .pl. Ahora si teniendo el programa ya escrito lo podemos consultar en el intérprete de Prolog si damos clicl en el menú File-Consult o dando doble clicl en el archivo .pl que creamos. Ya podemos "consultarlo".

Comandos básicos

?- halt. Sale del entorno prolog (el punto es muy importante ya que designa el final de la línea). 

?- edit('archivo'). Invoca al editor prdeterminado. 

?- consult('archivo'). ['archivo']. Consulta el fichero fuente. 

?- help help('ayuda). Solicita ayuda al entorno. 

?- make. Consulta los ficheros que cambiaron desde la última consulta.

Fuentes