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.

Ficha de softwareProlog
Estensión de ficheru .pl .pro .P
Versión inicial 1972
Tipu llinguaxe de programación, Llinguaxe de programación declarativu, deductive language (en) Traducir y logic programming language (en) Traducir
Etiqueta de Stack Exchange Stack Exchange
Cambiar los datos en Wikidata

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

editar
%%
%% 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

editar

Referencies

editar

Enllaces esternos

editar


Llinguaxes de programación
Ada | ALGOL | Awk | Basic| C | C++ | C# | Cobol | Delphi | Eiffel | Forth | Fortran | Haskell | Java | Lisp | Logo | Miranda | Modula-2 | Oberon | Ocaml | Pascal | PHP | Perl | Prolog | Python | Ruby | Smalltalk | Otros llinguaxes...