Anar al contingut

Prolog

De L'Enciclopèdia, la wikipedia en valencià

Prolog (o PROLOG), provinent del francés PROgrammation en LOGique,[1] és un llenguage de programació llògic i interpretat usat habitualment en el camp de l'Inteligència artificial.

Història

[editar | editar còdic]

Es tracta d'un llenguage de programació ideat a principis dels anys 70 en l'Universitat de Aix-Marseille I (Marsella, França) per Alain Colmerauer i Philippe Roussel. Va nàixer d'un proyecte que no tenia com a objectiu la traducció d'un llenguage de programació, sino el tractament algorítmic de llenguages naturals. Alain Colmerauer i Robert Kowalski treballaven en la part del processat del llenguage natural i Jean Trudel i Philippe Roussel en la part de deducció i inferència del sistema. Interessat pel método de resolució SL, Philippe Roussel va persuadir al seu autor, Robert Kowalski per a que colaborara en el proyecte, donant lloc a una versió preliminar del llenguage Prolog a finals de 1971[2] i apareixent la versió definitiva en 1972. Esta primera versió de Prolog va ser programada en ALGOL W.

Inicialment es tractava d'un llenguage totalment interpretat fins que, en 1983, David H.D. Warren va desenrollar un compilador capaç de traduir Prolog en un conjunt d'instruccions d'una màquina abstracta denominada Warren Abstract Machine, o abreviadamente, WAM. Des de llavors Prolog és un llenguage semi-interpretat.

Si be en un principi es tractava d'un llenguage d'us reduït, l'aparició d'intérprets del mateix para microordenadorés de 8 bits (ej: micro-PROLOG) i per a ordenadors domèstics de 16 bits (ej: Turbo Prolog de Borland, entre molts atres), a lo llarc de la década de 1980, va contribuir notablement a la seua popularisació.[3] Un atre important factor en la seua difusió va ser l'adopció del mateix per al desenroll del proyecte de la quinta generació de computadores a principis de la década dels 80,[4] en el context del qual es va desenrollar l'implementació paralelizada del llenguage anomenada KL1 i del que deriva part del desenroll modern de Prolog.

Les primeres versions del llenguage diferien, en les seues diferents implementacions, en molts aspectes dels seus sintaxis, amprant-se majorment com a forma normalisada el dialecte propost per l'Universitat d'Edimburc,[5] fins que en 1995 es va establir un estàndart ISO (ISO/IEC 13211-1), cridat ISO-Prolog.


Prolog s'emmarca en el paradigma dels llenguages llògics i declarativos, lo que ho diferencia enormement d'atres llenguages més populars tals com Fortran, Pascal, C o Java.

Regrés arrere (backtracking)

[editar | editar còdic]
Artícul principal → Regrés arrere.


En els llenguages de programació abans mencionats, les instruccions s'eixecuten normalment en orde seqüencial, és dir, una a continuació d'una atra, en el mateix orde en que estan escrites, que solament varia quan s'alcança una instrucció de control (un bucle, una instrucció condicional o una transferència).

Els programes en Prolog es componen de clàusules de Horn que constituïxen regles del tipo "modus ponendo ponens", és dir, "Si és veritat el antecedent, llavors és veritat el conseqüent". No obstant, la forma d'escriure les clàusules de Horn és al contrari de lo 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 en una menge i pot considerar-se similar a una instrucció o cridada a procediment dels llenguages imperatius. En Prolog no existixen instruccions de control. La seua eixecució es basa en dos conceptes: l'unificació i el backtracking.

Gràcies a l'unificació, cada objectiu determina un subconjunt de clàusules susceptibles de ser eixecutades. Cada una d'elles es denomina punt d'elecció. Prolog selecciona el primer punt d'elecció i seguix eixecutant el programa fins a determinar si l'objectiu és verdader o fals.

En cas de ser fals entra en joc el backtracking, que consistix en desfer tot lo eixecutat situant el programa en el mateix estat en el que estava just abans d'aplegar al punt d'elecció. Llavors es pren el següent punt d'elecció que estava pendent i es repetix de nou el procés. Tots els objectius terminen la seua eixecució be en èxit ("verdader"), be en fracàs ("fals").

Referències

[editar | editar còdic]
  1. Colmerauer, Alain i Roussel, Philippe. La naissance de Prolog, juliol de 1992
  2. BERGIN, Thomas J. i GIBSON, Richard G., History of Programming Languages II, New York, ACM Press, Addison-Wesley, 1996, ISBN 0-201-89502-1
  3. El llenguage PROLOG, artícul en el periòdic ABC del 12 d'octubre de 1986
  4. Aplicacions de l'Inteligència Artificial en l'Activitat Empresarial, la Ciència i l'Indústria, de Wendy B. Rauch-Hindin, pàgina 644 i següents, ISBN 84-87189-07-5, en Google Books.
  5. A falta d'una especificació formal del Prolog d'Edimburc s'ha utilisat sobretot com a referència el DEC-10 PROLOG Manual de Bowen (1982) o el Programming in Prolog de Clocksin i Mellish.

Vore també

[editar | editar còdic]


Referències

[editar | editar còdic]