Programare declarativă

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică, termenul de programare declarativă poate avea două semnificații diferite.

Descriere

În prima semnificație se înțelege un program care descrie cum arată o anumită entitate, mai degrabă decât să prescrie cum poate fi creată o entitate. De exemplu, paginile web HTML sunt declarative, deoarece descriu ce ar trebui să conțină pagina - titlu, text, imagini - dar nu cum să afișeze pagina pe ecranul computerului. Alte limbaje, cum ar fi Fortran , C și Java, se bazează pe o abordare diferită, necesitând programatorului să implementeze algoritmi de execuție specifici. În rezumat, programele imperative definesc în mod explicit un algoritm pentru a atinge un scop, în timp ce programele declarative definesc în mod explicit doar scopul care trebuie atins, lăsând implementarea algoritmului să fie realizată de software-ul suport (de exemplu, o instrucțiuneSQL select specifică proprietățile a datelor care trebuie extrase dintr-o bază de date, dar NU detaliile procesului de extracție efectiv).

A doua semnificație se referă la un program scris folosind un limbaj pur funcțional , logic sau de constrângere . Termenul „limbaj declarativ” se aplică uneori tuturor acestor tipuri de limbaje de programare, luate ca grup și considerate ca antitetice limbajelor imperative. Într-o oarecare măsură, aceste două definiții se suprapun. În special, programarea constrângerii și, într-o măsură mai mică, programarea logică, se concentrează pe descrierea proprietăților soluției dorite ( ce ), lăsând algoritmul să fie utilizat pentru a găsi soluția ( cum ) nedeterminat. Cu toate acestea, majoritatea limbajelor de constrângere și logică sunt capabile să descrie algoritmii și detaliile implementării metodelor și, prin urmare, nu pot intra în categoria declarațiilor efective.

În mod similar, este, de asemenea, posibil să scrieți programe în stil declarativ folosind un limbaj de tip imperativ, de obicei folosind tehnica încapsulării . Detaliile operațiunilor care trebuie efectuate sunt încorporate într-o bibliotecă sau cadru. Un exemplu este JUnit , un cadru al familiei Java, care permite, după o definiție simplă, să înregistreze blocurile de programe care trebuie testate.

Într-un program declarativ definiți structurile de date care pot fi procesate de algoritmii standardizați de limbaj pentru a produce rezultatele dorite. Un limbaj declarativ, ca orice alt limbaj, își definește propria sintaxă prin care cuvintele cheie pot fi combinate și o semantică care descrie rezultatul obținut folosind o anumită secvență de comenzi.

Limbaje de programare specifice domeniului

Aceste limbi, numite și DSL , sunt concepute pentru a satisface nevoile unui anumit sector de utilizare și sunt adesea declarative. Exemple sunt fișierele de configurare , foile de calcul și chiar e-mailurile , unde anteturile „De la:” și „Către:” pot fi considerate instrucțiuni de procesare. O limitare a DSL-urilor este că acestea nu răspund pe deplin afirmațiilor Turing , în sensul că există lucruri pe care aceste limbi nu le pot face (mai exact: nu au echivalența Turing ). De exemplu: foile de calcul nu pot fi utilizate pentru a trimite e-mailuri și, invers, un e-mail nu poate fi utilizat pentru a calcula soldul unui cont bancar. Din acest motiv, DSL-urile sunt adesea integrate ( încorporate ) în limbile de uz general . Această abordare permite programatorului să folosească DSL-urile pentru a-și efectua operațiunile specifice și limbajul de uz general pentru a aborda problemele care ar fi foarte dificil (dacă nu imposibil) de rezolvat cu DSL-urile . Programele DSL de sine stătătoare - cele care nu sunt integrate în limbaje de uz general - sunt de obicei mai ușor de utilizat, deoarece nu trebuie să adauge complexitățile conceptuale impuse de un limbaj de uz general.

Exemple

Cadru a cărui instalare include unele aspecte ale programării declarative:

Limbaje specifice domeniului care acceptă programarea declarativă:

  • Limbaj declarativ XSLT pentru transformarea documentelor XML
  • SQL include o parte declarativă (interogări pentru baze de date relaționale)
  • TK Solver
  • XForms un format XML care definește un model de procesare a datelor pentru date formatate XML și interfețe utilizator pentru manipularea datelor XML, cum ar fi formularele web .

Limbaje funcționale / logice / de constrângere care acceptă programarea declarativă:

Elemente conexe

linkuri externe

Controlul autorității LCCN (EN) sh93000071 · GND (DE) 4293503-9 · BNF (FR) cb123495726 (data) · BNE (ES) XX538968 (data)
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT