Movatterモバイル変換


[0]ホーム

URL:


Vés al contingut
Viquipèdial'Enciclopèdia Lliure
Cerca

Prolog

De la Viquipèdia, l'enciclopèdia lliure
Infotaula de llenguatge de programacióProlog
Tipusllenguatge de programació,llenguatge de programació declaratiu,deductive language(en)Tradueix ilogic programming language(en)TradueixModifica el valor a Wikidata
Data de creació1972Modifica el valor a Wikidata
DissenyAlain Colmerauer,Robert Kowalski iPhilippe RousselModifica el valor a Wikidata
Paradigma de programacióprogramació lògica,Programació declarativa iprogramació modularModifica el valor a Wikidata
Darrera versió estable9.2.x ()
9.3.19 ()Modifica el valor a Wikidata
Influenciat perplanificadorModifica el valor a Wikidata
Extensió dels fitxerspl, pro i PModifica el valor a Wikidata
Etiqueta d'Stack ExchangeEtiquetaModifica el valor a Wikidata

ElProlog (nom provinent dels motsfrancesosprogramation ilogique[1]) és unllenguatge de programació bastant popular en el medi d'investigació enintel·ligència artificial.

Història

[modifica]

Es tracta d'unllenguatge de programació ideat a principis dels anys setanta a laUniversitat d'Aix-Marseille I (Marsella,França) perAlain Colmerauer iPhilippe Roussel. Va néixer d'un projecte que no tenia com a objectiu la traducció d'un llenguatge de programació, sinó el tractament algorítmic de llenguatges naturals. Alain Colmerauer i Robert Pasero treballaven en el processament del llenguatge natural i Jean Trudel i Philippe Roussel en la deducció i inferència del sistema. Interessat pel mètode de resolució SL, Philippe Roussel va persuadir al seu autor, Robert Kowalski, per a col·laborar en el projecte. Aquest esdeveniment va donar lloc a una versió preliminar del llenguatge Prolog a finals de 1971,[2] sortint la versió definitiva a 1972.[3] La primera versió de Prolog va ser programada enALGOL W.

Inicialment, es tractava d'un llenguatge totalment interpretat fins que, a mitjans dels setanta,David H.D. Warren va desenvolupar un compilador capaç de traduir Prolog en un conjunt d'instruccions d'unamàquina abstracta denominadaWarren Abstract Machine, o abreviadament,WAM. Des d'aquell moment, Prolog és un llenguatge semiinterpretat.

Tot i que en un principi era un llenguatge d'ús reduït, l'aparició d'intèrprets permicroordinadors de 8 bits (ex:micro-PROLOG) i per ordinadors domèstics de 16 bits (ex:Turbo Prolog deBorland) va contribuir notòriament a la seva popularització[4] durant la dècada dels vuitanta. Un altre factor cabdal a la difusió fou l'adopció del mateix per al desenvolupament del projecte de la quinta generació d'ordinadors a principis dels anys vuitanta.[5] Paral·lelament, també es va desenvolupar la implementació paral·lelitzada del llenguatge anomenadaKL1 (Kernel Language 1) i del qual deriva part de Prolog l'evolució moderna de Prolog.

Les primeres versions del llenguatge diferien, en les diferents implementacions, en molts aspectes de la sevasintaxi, emprant-se majoritàriament com a forma normalitzada el dialecte proposat per la Universitat d'Edimburg, fins que el 1995 es va establir un estàndard ISO (ISO/IEC 13211- 1), anomenat ISO-Prolog.

Descripció

[modifica]

El Prolog s'emmarca en el paradigma dels llenguatges declaratius, la qual cosa el diferencia enormement d'altres llenguatges més populars comFortran,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 (unbucle, una instrucció condicional o una transferència).

Els programes en Prolog es defineixen en termes declàusules de Horn, que es poden veure com expressions lògiques de la forma "Si de veritat l'antecedent, llavors és veritat el conseqüent". No obstant això, en les clàusules de Horn primer s'escriu el conseqüent i després l'antecedent.

L'antecedent pot ser una única fórmula atòmica, una conjunció de diverses fórmules atòmiques o pot no haver-n'hi cap. Si no hi ha antecedent, tenim que la clàusula correspon a un fet. Això és, sabem que el conseqüent és cert.

L'execució en Prolog es basa a prendre una fórmula atòmica com a objectiu i intentar-la demostrar. Per aconseguir-ho se cercaran entre les clàusules del programa aquelles que són adequades i es prendran elsobjectes de l'antecedent com a nous objectius a demostrar.

Elsobjectes de l'antecedent estan separats per comes i es poden considerar, d'alguna manera, similars a una instrucció o crida a un procediment dels llenguatges imperatius.

En Prolog no existeixen instruccions de control. La seva execució es basa en dos conceptes: la unificació i elbacktracking.

  • Gràcies a launificació, cada objectiu determina un subconjunt de clàusules susceptibles d'ésser executades. Cadascuna d'elles es denominapunt d'elecció. El Prolog selecciona el primer punt d'elecció i segueix executant el programa fins a determinar si l'objectiu és vertader o fals. En cas de ser fals, entra en joc elbacktracking.
  • Elbacktracking consisteix a 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 envertader, bé sigui enfals.

Exemple de Codi Prolog

[modifica]
%%%% declaracions%%parede('joan','maria').% joan és pare de mariaparede('pau','joan').% pau és pare de joanparede('pau','marcela').parede('carles','debora').% A és fill de B si B és pare de Afillde(A,B):-parede(B,A).% A és avi de B si A és pare de C i C és pare Bavide(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 mateixgermade(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 Bfamiliarde(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

Altres llenguatges de programació lògica

[modifica]

Referències

[modifica]
  1. Colmerauer, Alain y Roussel, Philippe.La naissance de Prolog, juliol de 1992
  2. BERGIN, Thomas J.; GIBSON, Richard G.History of Programming Languages II. Nova York: ACM Press, Addison Wesley, 1996.ISBN ISBN 0-201-89502-1. 
  3. Kowalski, R. A.The early years of logic programming. 
  4. ABC. «El lenguaje Prolog», 12-10-1986.
  5. Rach-Hidin, Wendy B. Aplicaciones de la Inteligencia Artificial en la Actividad Empresarial, la Ciencia y la Industria, pàg. 644 i següents.

Enllaços externs

[modifica]
  • Vegeu aquesta plantilla
Assembly · Bash · BASIC · C · C++ · C# · COBOL · Haskell · Idris · Fortran · Java · JavaScript (JS) · Lisp · Pascal · Perl · PHP · Prolog · Python · PureScript · Ruby · Scheme · Smalltalk · Visual Basic
Registres d'autoritat
Bases d'informació
Obtingut de «https://ca.wikipedia.org/w/index.php?title=Prolog&oldid=33340734»
Categoria:
Categories ocultes:

[8]ページ先頭

©2009-2025 Movatter.jp