Estamos acostumbrados a programar lenguajes que denominamos imperativos. BASIC, PASCAL, PHP, son lenguajes imperativos. Su fundamento es transformar un algoritmo en una secuencia de sentencias (instrucciones) y el proceso de una serie de datos mediante el uso de estructuras lógicas como variables o ficheros. Hemos visto, en los anteriores posts, una introducción a cómo se programa en los lenguajes imperativos
Sacar a una rata del laberinto, mediante instrucciones del tipo "da un paso adelante", "gira a la derecha", "gira a la izquierda", "repite lo siguiente hasta que..." o "mientras tal cosa haz..." es programar imperativamente. Es imperativo también realizar cálculos matemáticos del tipo A:=B+C, o mejor dicho, "la suma de los números contenidos en las variables B y C se introduce en la variable que se llama A".
Sin embargo, en el ámbito de la Inteligencia Artificial se utilizan otro tipo de lenguajes no precisamente imperativos, sino de carácter "lógico". En 1981 nació en Japón un lenguaje llamado PROLOG (de PROgramación LOgica) que tuvo mucha popularidad, debido al impulso que se dió a un proyecto orientado a la "quinta generación de ordenadores". Esa generación se supone que daría un vuelco a todo lo conocido hasta entonces y sería la llave para crear máquinas con pensamiento propio.
Los lenguajes de programación como PROLOG, son declarativos. Un programa consta de una serie de reglas o aserciones lógicas.
La base de la programación en PROLOG es la regla del tipo p->q (p implica q). Con este tipo de reglas de conocimiento, si sabemos que p es cierto, entonces se deducirá q como resultado. Esto es esencialmente distinto a programar imperativamente.
En lo lenguajes lógicos, se trabaja pues con relaciones. Una relación establece una dependencia de algún tipo entre dos objetos, por ejemplo si una casa tiene ventanas, podemos escribirlo, en PROLOG, así:
tiene(casa,ventanas)
En PROLOG también hay variables. Las variables en PROLOG, se dice que están instanciadas cuando se puede establecer un valor concreto para ella. Por ejemplo, si preguntamos "¿Una casa tiene X?", el sistema responderá: "X = ventanas".
Finalmente, las reglas establecen dependencias de implicación entre relaciones. Por ejemplo:
jugar(bien) -> campeonato(ganar)