Prolog
De Viquipèdia
El Prolog (nom provinent dels mots francesos programation i logique) és un llenguatge de programació bastant popular en el medi d'investigació en intel·ligència artificial.
Es tracta d'un llenguatge de programació ideat a principis dels anys 70 a la universitat d'Ais-Marsella pels professors Alain Colmerauer i Phillipe Roussel. Inicialment es tractava d'un llenguatge totalment interpretat fins que, a mitjans dels 70, David H.D. Warren va desenvolupar un compilador capaç de traduir Prolog en un conjunt d'instruccions d'una màquina abstracta denominada Warren Abstract Machine, o abreviadament, WAM. Des de llavors, Prolog és un llenguatge semi-interpretat.
El Prolog s'emmarca en el paradigma dels llenguatges declaratius, la qual cosa el diferencia enormement d'altres llenguatges més populars com Fortran, Pascal, C, etc.
En aquests darrers llenguatges, les instruccions s'executen normalment en ordre seqüencial, és a dir, una a continuació d'una altra, en el mateix ordre en el qual estan escrites, que només varia quan s'arriba a una instrucció de control (un bucle, una instrucció condicional o una transferència).
Els programes en Prolog es composen de clàusules de Horn, que constitueixen regles del tipus "modus ponens", és a dir, "Si de veritat l'antecedent, llavors és veritat el conseqüent". No obstant, la forma d'escriure les clàusules de Horn és al contrari de l'habitual. Primer s'escriu el conseqüent i després l'antecedent. L'antecedent pot ser una conjunció de condicions que es denomina seqüència d'objectius. Cada objectiu se separa amb una coma i pot considerar-se similar a una instrucció o crida a procediment dels llenguatges imperatius. En Prolog no existeixen instruccions de control. La seva execució es basa en dos conceptes: la unificació i el backtracking.
- Gràcies a la unificació, cada objectiu determina un subconjunt de clàusules susceptibles d'ésser executades. Cadascuna d'elles es denomina punt d'elecció. El Prolog selecciona el primer punt d'elecció i segueix executant el programa fins determinar si l'objectiu és vertader o fals. En cas de ser fals, entra en joc el backtracking.
- El backtracking consisteix en desfer tot allò executat i en situar el programa en el mateix estat en el qual es trobava just abans d'arribar al punt d'elecció. Llavors es pren el següent punt d'elecció que estava pendent i es repeteix de nou el procés.
Tots els objectius terminen la seva execució bé sigui en "vertader", bé sigui en "fals".
[edita] Exemple de Codi Prolog
%% %% declaracions %% parede('joan', 'maria'). % joan és pare de maria parede('pau', 'joan'). % pau és pare de joan parede('pau', 'marcela'). parede('carles', 'debora'). % A és fill de B si B és pare de A fillde(A,B) :- parede(B,A). % A és avi de B si A és pare de C i C és pare B avide(A,B) :- parede(A,C), parede(C, B). % A i B són germans si el pare de A és també el pare de B i si A i B no són el mateix germade(A,B) :- parede(C,A) , parede(C,B), A \== B. % A i B són familiars si A és pare de B o A és fill de B o A és germà de B familiarde(A,B) :- parede(A,B). familiarde(A,B) :- fillde(A,B). familiarde(A,B) :- germade(A,B). %% %% consultes %% % joan és germà de marcela? ?- germade('joan', 'marcela'). yes % carles és germà de joan? ?- germade('carles', 'joan'). no % pau és avi de maria? ?- avide('pau', 'maria'). yes % maria és avi de pau? ?- avide('maria', 'pau'). no
[edita] Enllaços externs
- Web de prolog d'estudiants argentins
- Laboratori de programació lògica de la Universidad Politécnica de Madrid.
- Tutorial gratuït de programació en Prolog
- Curs intermedi (gratuït) de programació en Prolog
Llenguatges de programació |
---|
Ada | ALGOL | Awk | Basic| BCPL | c | C++ | C# | Cobol | D | Delphi | Eiffel | Forth | Fortran | Haskell | Java | Lisp | Logo | MAGIC | Miranda | Modula-2 | Oberon | Ocaml | Pascal | PHP | Perl | Prolog | Python | Ruby | Smalltalk | Altres llenguatges... |