Prolog

Prolog (del inglés Programming in Logic), ye un llinguaxe lóxicu conocíu d'abondo nel área de la investigación n'Intelixencia Artificial.

Prolog ye un llinguaxe diferiente a los más conocíos, tanto de los imperativos como Fortran, Pascal, C etc, como de los funcionales como Lisp. 

En tolos nomaos, les instrucciones execútense nun orden secuencial, esto ye, una tres otra y nel mesmu orden nel que tán escribayaes, condición que camudarase cuando se atope una instrucción de control (un llazu, una instrucción condicional o una tresferencia). 

En Prolog, les coses son distintes: el orden de execución de les instrucciones nun tien na que ver col orden en que foron escribayaes. Tampocu hai instrucciones de control al usu. Pa trabayar nesti llinguaxe, un programaor tien que avezase a cavilgar d'un modu perdiferente al que ye emplegau nos llinguaxes clásicos. 

Les instrucciones de Prolog llámense "regles o cláusules de Horn" y puen representase así: "Facer esto nel casu en que se cumplan tales o cuales condiciones". Una instrucción executarase automáticamente en cualesquiera momentu nel que se cumplan les condiciones especificaes. Amás de les regles, defínense tamién "fechos" nos que s'apliacrán les regles.

Ye dicir, en Prolog, un programa consiste nuna descripción lóxica d'una teoría y la computación ye la deducción de la teoría pa una consulta dada.

 Exemplu de códigu en Prolog 

%%
%% declaraciones
%%

paide('xuan', 'maria'). % xuan ye'l pai de maria
paide('pablo', 'xuan'). % pablo ya'l pai de xuan
paide('pablo', 'marcela').
paide('carlos', 'debora').

% A ye fiu de B si B ye pai de A
fiude(A,B) :- paide(B,A).

% A ye güelu de B si A ye pai de C y C ye pai de B
guelude(A,B) :- paide(A,C), paide(C, B).

% A y B son hermanos si el pai de A ye tamién el pai de B y si A y B nun son el mesmu
hermanude(A,B) :- paide(C,A) , paide(C,B), A <> B. 

% A y B son familiares si A ye pai de B o A ye fiu de B o A ye hermanu de B
familiarde(A,B) :- paide(A,B) ; fiude(A,B) ; hermanude(A,B).

%%
%% consultes
%%

% xuan ye hermanu de marcela?
?- hermanude('xuan', 'marcela').
yes

% carlos ye hermanu de xuan?
?- hermanude('carlos', 'xuan').
no

% pablo ye güelu de maria?
?- guelude('pablo', 'maria').
yes

% maria ye güela de pablo?
?- guelude('maria', 'pablo').
no

 Ver tamién 
 Programación Lóxica

 Referencies 

 Enllaces esternos 
 Web de prolog d'estudiantes arxentinos 

Categoría:Llinguaxes de programación