Prolog

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
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

Bibliografie

Elemente conexe

Alte proiecte

linkuri externe

Controlul autorității LCCN (EN) sh85107397 · BNF (FR) cb11970224v (data)
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT