Professional Documents
Culture Documents
HISTORIA
Se trata de un lenguaje de programacin ideado a principios
de los aos 70 en la Universidad de Aix-Marseille (Marsella,
Francia) por los profesores Alain Colmerauer y Philippe
Roussel. Naci de un proyecto que no tena como objetivo la
implementacin de un lenguaje de programacin, sino el
procesamiento de lenguajes naturales. Alain Colmerauer y
Robert Pasero trabajaban en la parte del procesado del
lenguaje natural y Jean Trudel y Philippe Roussel en la parte
de deduccin e inferencia del sistema. Interesado por el
mtodo de resolucin SL, Trudel persuadi a Robert Kowalski
para que se uniera al proyecto, dando lugar a una versin
preliminar del lenguaje Prolog a finales de 1971 2 y
apareciendo la versin definitiva en 1972.3 Esta primera
versin de Prolog fue programada en ALGOL W.
Inicialmente se trataba de un lenguaje totalmente
interpretado hasta que, en 1983, David H.D. Warren desarroll
un compilador capaz de traducir Prolog en un conjunto de
instrucciones de una mquina abstracta denominada Warren
Abstract Machine, o abreviadamente, WAM. Desde entonces
Prolog es un lenguaje semi-interpretado.
Si bien en un principio se trataba de un lenguaje de uso
reducido, la aparicin de intrpretes del mismo para
microordenadores de 8 bits (ej: micro-PROLOG) y para
ordenadores domsticos de 16 bits (ej: Turbo Prolog de
Borland, entre otros muchos) a lo largo de la dcada de 1980
contribuy notablemente a su popularizacin. 4 Otro
importante factor en su difusin fue la adopcin del mismo
para el desarrollo del proyecto de la quinta generacin de
computadoras a principios de la dcada de los 80, 5 en cuyo
contexto se desarroll la implementacin paralelizada del
PROGRAMACIN EN PROLOG
Existen dos tipos de clusulas: Hechos y Reglas. Una regla es
del tipo:
Cabeza :- Cuerpo.
El predicado predefinido
true/0
siempre es verdad.
EXPRESIONES
Prolog cuenta con operadores para la unificacin y
comparacin, sea con evaluacin o sea simblica, como los
siguientes:
X = Y %unificacin simblica
X == Y %comparacin simblica.
?- X is 3+5.
X=8
?- X = 3+5.
X = 3+5
Listas
La representacin de hechos simples no es lo comn en la
clasificacin de elementos, sino que se agrupan los elementos
de un mismo tipo en una lista.
Las listas son colecciones de elementos en Prolog. Una lista se
divide en dos partes: Cabeza. Es el primer elemento de la
lista. Cola. Es una lista con el resto de los elementos de la
lista. La cabeza y la cola de una lista se separan con el
smbolo "|".
Ejemplo simple
%%
%% declaraciones
%%
padrede('juan', 'maria'). % juan es padre de maria
padrede('pablo', 'juan'). % pablo es padre de juan
padrede('pablo', 'marcela').
padrede('carlos', 'debora').
% A es hijo de B si B es padre de A
hijode(A,B) :- padrede(B,A).
% A es abuelo de B si A es padre de C y C es padre B
abuelode(A,B) :padrede(A,C),
padrede(C,B).
% A y B son hermanos si el padre de A es tambin el padre de B y si A y B no
son lo mismo
hermanode(A,B) :padrede(C,A) ,
padrede(C,B),
A \== B.
Factorial de un nmero
% La sintaxis es factorial(N, F) -> Factorial de N es F (el resultado se guarda en
F)
factorial(0, 1).
factorial(N, F) :- N>0, N1 is N - 1, factorial(N1, F1), F is N*F1.
%el factorial se llama recursivamente dejando el resultado en F
H=1
J=2
T=[3]
Bsqueda de un elemento
% Si queremos determinar si un elemento pertenece a una lista.
% El elemento pertenece a la lista si coincide con la cabeza de la lista.
% El elemento pertenece a la lista si se encuentra en la cola de la lista.
pertenece(X,[X|_]) :- !.
pertenece(X,[_|R]):- pertenece(X,R).
?- pertenece(b,[a,b,c]).
Yes
?- pertenece(b,[a,[b,c]]).
No
?- pertenece([b,c],[a,[b,c]]).
Yes
Concatenar listas
%
%
%
%
%
concatenar([],L,L).
concatenar([X|L1],L2,[X|L3]):-concatenar(L1,L2,L3).
?- concatenar([1,2],[3,4],R).
R = [1, 2, 3, 4].
CONCLUSIONES
Las bases de Prolog se remontan a la necesidad de
automatizar ciertos procesos, como el de la resolucin de
autmatas deterministas finitos.
Prolog es una herramienta sencilla, potente y til para el
desarrollo de sistemas expertos e inteligencia artificial. Su
popularidad se debe a sus aplicaciones en sistemas complejos
de alta demanda en el mercado actual.
Su crecimiento seguir mientras exista necesidad de este tipo
de sistemas.
Prolog tiene la ventaja que el programa revisa la base de
datos para encontrar soluciones a las preguntas, infiriendo el
mismo la respuesta basndose en las reglas del programa. La