Prolog
Prolog limbaj de programare | |
---|---|
Autor | Alain Colmerauer |
Data de origine | 1972 |
Utilizare | limbaj de uz general |
Paradigme | Programare logică |
Tastare | nu există tipuri de date |
Specificații lingvistice | ISO / IEC 13211-1 (1995) |
Extensii comune | .pl .pro .P |
Influențată de | Planificator |
Prolog (contracția gramei PRO franceze în LOG ique ) este un limbaj de programare care adoptă paradigma de programare logică .
A fost conceput de Robert Kowalski (aspect teoretic), Marten Van Emdem (demonstrație experimentală) și implementat de Alain Colmerauer în anii șaptezeci , constituind o încercare de a construi un limbaj de programare care să permită exprimarea problemei într-o formă logică în loc de traducerea unui algoritm de soluție sub formă de instrucțiuni care trebuie executate de mașină. Implementarea actuală a Prolog se datorează în mare parte codificării eficiente a lui David HD Warren , implementată prin Warren Abstract Machine ( 1983 ).
Prologul este utilizat în multe programe de inteligență artificială , sintaxa și semantica acestuia sunt foarte simple și clare (scopul primitiv a fost de a oferi un instrument de lucru lingviștilor fără cunoștințe de computer).
Prologul se bazează pe calculul predicatelor (tocmai calculul predicatelor de ordinul întâi); Cu toate acestea sintaxa este limitată la formule numite clauze Horn , care sunt disjuncțiilor ordinul întâi literali universal cuantificați cu cel mult un literal pozitiv.
Executarea unui program Prolog este comparabilă cu dovada unei teoreme prin intermediul regulii de inferență numită rezoluție (introdusă de Robinson în 1965 ). Conceptele de bază sunt unificarea, recursivitatea cozii și retrogradarea .
Multe limbi, cum ar fi Datalog sau AnsProlog , se bazează pe Prolog.
Sintaxă
În Prolog, logica programului este exprimată sub forma relațiilor, iar activitățile de calcul sunt declanșate de o interogare referitoare la aceste relații.
Tipuri de date
Elementul generic al Prologului se numește termen . Termenii pot fi constante ( atomi sau numere ), variabile sau termeni compuși .
- Un atom este un nume generic fără semnificație intrinsecă, de exemplu:
x
,blu
,'Taco'
,'questo signore'
. - Un număr poate fi întreg sau zecimal.
- O variabilă este notată prin intermediul unui șir de litere, cifre și puncte de subliniere (_) începând cu majuscule sau cu puncte de subliniere.
- Un termen compus este alcătuit dintr-un atom numit „functor” și unul sau mai multe argumente - de asemenea termeni - scrise între paranteze și separate prin virgule, de exemplu
data(27,'marzo',1980)
anno_modello_auto('Mazda','cx 5',1986)
și'Amici'(zelda,[tom,jim])
.
Cazuri speciale de termeni compuși:
- O listă este o colecție ordonată de termeni, separați prin virgule; este indicat prin intermediul parantezelor pătrate; lista goală
[]
este permisă. Exemple:[1,2,3]
și[rosso,verde,blu]
. - Un șir este o secvență de caractere delimitate prin ghilimele duble ("), de exemplu
"essere o non essere"
.
Reguli și fapte
O regulă are forma:
Cap: - corp.
care spune: „Capul este adevărat dacă Corpul este adevărat”. (Rețineți că regula se termină cu un punct.)
Un singur termen (chiar compus), fără semnul :-
, se numește fapt . Faptele se ridică la reguli corporale, care sunt considerate automat adevărate. Un exemplu de fapt este:
pisică ( Thomas ).
Dincolo de utilizarea strict intenționată a teoriei, Prolog oferă și predicate speciale care servesc pentru intrare / ieșire și alte activități auxiliare. De exemplu, write/1
afișează un termen pe ecran.
Exemplu de program
Salut Lume!
Următorul exemplu imprimă textul „ Hello world ”.
? - scrie ( „Hello World” ), nl .
Permutări
Cu toate acestea, puterea Prolog nu rezidă în gestionarea sa de intrare / ieșire, ci în posibilitatea de a reprezenta pur și simplu concepte complexe, de exemplu algoritmi combinatori . Iată un program care calculează toate permutările posibile ale unui cuvânt dat ca o listă de caractere:
permutare ([], []).
permutare ( Xs , [ Z | Zs ]) : - selectați ( Z , Xs , Ys ), permutare ( Ys , Zs ).
selectați ( X , [ X | Xs ], Xs ).
selectați ( Y , [ X | Xs ], [ X | Ys ]) : - selectați ( Y , Xs , Ys ).
Meta-Interpretare
În Prolog este ușor să scrieți interpreți și compilatori. De exemplu, un meta-interpret Prolog (adică un interpret Prolog scris în Prolog) constă din doar 3 linii de cod:
vanilie ( adevărat ).
vanilie (( A , B )): - vanilie ( A ), vanilie ( B ).
vanilie ( X ): - X \ == adevărat , clauză ( X , B ), vanilie ( B ).
Implementări
- Amzi! Prolog
- Bună ziua Prolog
- ECLiPSe , pe eclipseclp.org .
- GNU Prolog
- Jekejeke Prolog
- JIProlog , pe jiprolog.com .
- Lpa Prolog
- Prolog.NET
- SICStus Prolog
- Strawberry Prolog
- SWI-Prolog
- tuProlog
- Visual Prolog (fost Turbo Prolog)
- XSB
- YAP Prolog
Bibliografie
- Bazele logice ale Prologului , în LIST , anul 5, nr. 8/9, Roma, Edicomp, 15 septembrie / 15 octombrie 1987, pp. 28-30,OCLC 955780660 .
- Instrumentul principal Prolog , în Inteligența artificială , n. 1, Milano, Arcadia, 1988, pp. 8-12.
- (EN) Patrick Blackburn, Johan Bos, Kristina Striegnitz, Learn Prolog Now! , Publicații de colegiu, 2006, ISBN 1-904987-17-6
- (EN) JA Robinson, A-Machine-Oriented Logic Based on the Resolution Principle, în Jurnalul Asociației pentru Mașini de Calculat, 12 (1), ianuarie 1965.
Elemente conexe
Alte proiecte
linkuri externe
- ( EN ) Prolog: Documentele standard ISO , pe pauillac.inria.fr .
- ( EN ) Prolog.info Știri și resurse despre Prolog și AI.
Controlul autorității | LCCN (EN) sh85107397 · BNF (FR) cb11970224v (data) |
---|