# Micro-PROLOG

micro-PROLOG es el nombre de una variante o dialecto del lenguaje PROLOG, inicialmente creada para microordenadores de 8 bits, popularizada a principios de la década de 1980. Fue usado en la enseñanza pública, normalmente como introducción a la programación lógica y a la Inteligencia Artificial.

## Historia

Las primeras versiones fueron implementadas en el Imperial College de Londres, por Frank McCabe y Richard Ennals, bajo la supervisión de Robert Kowalski entre 1979 y 1980.

### LPA micro-PROLOG

Comercializado a partir de 1980 por la empresa británica LPA Ldt. (Logic Programming Associates Limited), se realizaron versiones de 8 bits para varios ordenadores, como el ZX Spectrum, el Commodore 64, el BBC Micro, el Enterprise, el MSX y el Apple II, entre otros. También se lanzó una versión para el sistema operativo CP/M, tanto en su implementación para el microprocesador Zilog Z80 de 8 bits como en la realizada para el Intel 8086 de 16 bits (CP/M-86). En esta misma línea de implementaciones para sistemas de 16 bits se realizó una versión para QDOS, el sistema operativo de los Sinclair QL, una versión para el sistema MS-DOS y otra para sistemas UNIX. Tras el LPA micro-PROLOG 3.1 aparecido en 1984, la misma compañía renombró el producto a LPA micro-PROLOG Professional en 1985 y un poco más tarde a LPA PROLOG Professional. Con posterioridad esta misma empresa abandonó la particular sintaxis del micro-PROLOG en sus siguientes productos.
Con posterioridad han aparecido algunas versiones no oficiales, como la realizada para el sistema operativo de disco TR-DOS del ZX Spectrum por Nicolas Rodionov.

### Derivados

La influencia de micro-PROLOG ha sido escasa en lenguajes posteriores, si bien algunos han adoptado algunas de sus características. El FRIL (Fuzzy Relational Inference Language) es una notable excepción, ya que basa explícitamente su sintaxis en él, sin ser no obstante plenamente compatible con el micro-PROLOG. Desarrollado en el seno de la Universidad de Bristol, la versión más reciente de este lenguaje es la 4.9, aunque desde 2003 no ha sido actualizado.
Su continuador más reciente ha sido hasta ahora el EDULOG, desarrollado a partir de 1999 y basado en la experiencia adquirida tras trabajar en el área educativa durante años con micro-PROLOG. Creado por el Grupo de Programación Funcional y Lógica, un equipo de trabajo integrado por docentes y alumnos de la Universidad Nacional de Luján y de la Universidad Nacional de la Pampa, ambas de Argentina, pretende superar los inconvenientes que plantea la utilización del habitualmente empleado interface SIMPLE y otros problemas observados en el aprendizaje que derivan de las características sintácticas propias del lenguaje, como el abundante uso de paréntesis o el formato rígido de algunas consultas.
En 1986 Van Caneghem publicó el código fuente en PASCAL de un intérprete llamado Micro Prolog II en su libro "L'anatomie de Prolog" (ISBN 2-7296-0149-X). Un intérprete distribuido como código fuente, escrito para Modula-2 por Umberto Salsi, y llamado simplemente PROLOG, basa explícitamente su sintaxis en la del micro-PROLOG con interface SIMPLE, sin llegar a ser enteramente compatible con el mismo. Otro intérprete de micro-PROLOG en PASCAL fue realizado por Zoran Budimac en 1990.

### Relacionados

Dada la relación entre el Lisp y el micro-PROLOG, algunas implementaciones de Prolog en Lisp y en Scheme (un dialecto del Lisp) muestran gran similitud con el micro-PROLOG. En el libro "The implementation of Prolog" (Princeton University Press, 1993, ISBN 0-691-08757-1) de Patrice Boizumault aparece el código fuente en Lisp, de un intérprete de Prolog llamado MicroProlog II. Otro ejemplo de Prolog en Lisp bajo el nombre de MicroProlog es el de Ken Kahn, modificado para XLISP por David Betz; basado en otros códigos fuente anteriores de Par Emanuelson y Martin Nilsson, ha sido también modificado para ejecutarse bajo RefLisp por Bill Birch. En ambos casos, la similitud no va más allá del nombre y la compatibilidad con el micro-PROLOG original es baja cuando no nula.
También es aparentemente similar, aunque en mucha mayor medida, el Schelog, lenguaje que fusiona características del Scheme y del PROLOG.

## Características

A diferencia del PROLOG original (de la Universidad de Aix-Marsella), del ISO-PROLOG (basado en el modelo auspiciado por la Universidad de Edimburgo) empleado en las principales versiones, como el SWI-Prolog de la Universidad de Ámsterdam o el CIAO-PROLOG de la Universidad Politécnica de Madrid, el micro-PROLOG reduce al mínimo su complejidad, al objeto de ser accesible, perdiendo con ello versatilidad y potencia. Es junto al PROLOG estructurado, representado por el Turbo PROLOG de Borland y sus derivados, como el Visual PROLOG, implementado por PDC o el EZY Prolog de EDMGROUP, el dialecto que más se separa del estándar.
Su sintaxis se basa en listas, de manera similar a Lisp, por lo que ambos lenguajes han sido frecuentemente relacionados. El elemento fundamental en micro-PROLOG es la lista, en el sentido más amplio del término, pues tanto los datos como los programas son listas. Un programa contiene, pues, siempre como mínimo una lista dentro de otra lista.
Entre sus características notables están sus concesiones a la programación imperativa en detrimento de la programación lógica y de la programación declarativa. Se distribuyó con varios añadidos, entre ellos los llamados interface SIMPLE (el más empleado), interface MITSI, interface EMITSI, interface MICRO y el interface DEC (que pretendía proporcionar una sintaxis similar a la del PROLOG para sistemas DEC PDP-10).

## Bibliografía

En inglés:
* Beginning micro-PROLOG (A Hands on! computer book), J. R Ennals, ISBN 0066690005
* Micro-Prolog: Programming in Logic, Keith L. Clark, 1984, ISBN 013581264X, ISBN 978-0135812648
* Learning Micro-Prolog: A Problem Solving Approach, Tom Conlon, 1985, ISBN 0201112418, ISBN 9780201112412
* Micro-Prolog & Artificial Intelligence, A. A. Berk, 1985, ISBN 0003831582
* micro-PROLOG 2.12 Programmer's Reference Manual (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última)., manual de 1981, PDF.
* micro-PROLOG 3.1 Programmer's Reference Manual, manual de 1984, PDF.
* micro-PROLOG Primer (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última)., manual de 1982, PDF.
* Introduction to micro-PROLOG for the Sinclair ZX Spectrum (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última)., manual de 1983, PDF.
En español:
* Programación en Micro-PROLOG: un lenguaje de la 5ª generación, Hugh De Saram, 1987, ISBN 84-283-1531-0, ISBN 978-84-283-1531-9
* Micro-PROLOG: la lógica como lenguaje para la alfabetización informática, J. R. Ennals, 1987, ISBN 84-86251-48-6
* "Microprolog: el lenguaje de la lógica", artículo de F. J. Martínez Galilea en la revista MicroHobby, número 107, página 35.
* "La edición en Microprolog", artículo de F. J. Martínez Galilea en la revista MicroHobby, número 113, página 22 y página 23.
* "La obtención de información en Microprolog", artículo de F. J. Martínez Galilea en la revista MicroHobby, número 115, página 24 y página 25.
* "Las sentencias condicionales en MicroProlog", artículo de F. J. Martínez Galilea en la revista MicroHobby, número 122, página 30 y página 31.
* "Búsqueda de datos y operaciones aritméticas en MicroProlog", artículo de F. J. Martínez Galilea en la revista MicroHobby, número 126, páginas 12 y 13 ( ).
* "El proceso de listas en Microprolog", artículo de F. J. Martínez Galilea en la revista MicroHobby, número 136, páginas 30 y 31 ( ).
* "La recursión en Microprolog", artículo de F. J. Martínez Galilea en la revista MicroHobby, número 148, páginas 16 y 17 ( ).
* "Programando Microprolog", artículo de F. J. Martínez Galilea en la revista MicroHobby, número 157, páginas 22 y 23 ( ).
* "Las primitivas Isall y Forall en Microprolog", artículo de F. J. Martínez Galilea en la revista MicroHobby, número 165, páginas 18 y 19 ( ).
* "El análisis sintáctico en Microprolog", artículo de F. J. Martínez Galilea en la revista MicroHobby, número 169, páginas 25 y 26 ( ).
* "Aplicaciones avanzadas de Microprolog", artículo de F. J. Martínez Galilea en la revista MicroHobby, número 172, páginas 50 y 51 ( ).
En otras lenguas:
* Analysis Report of micro-PROLOG, Zhongzhi Shi, etc., 1986, Institute of Computing Technology, Academia Sinica, en chino, citado en Intelligence Science & Artificial Intelligence