Deklarativ programmering er et programmeringsparadigme , hvor specifikationen af en løsning på et problem er specificeret, det vil sige det forventede resultat beskrives, og ikke måden at opnå det på. Det modsatte af deklarativ er imperativ programmering , hvor der på et eller andet detaljeniveau kræves en beskrivelse af rækkefølgen af trin til at løse et problem. HTML og SQL nævnes almindeligvis som eksempler på deklarative sprog .
Deklarative programmer bruger ikke begrebet stat, især indeholder de ikke variabler og tildelingsoperatører , referentiel gennemsigtighed er tilvejebragt . Det tætteste på "rent deklarativ" programmering er at skrive eksekverbare specifikationer . I dette tilfælde er programmet en formel teori , og dets udførelse er samtidig et automatisk bevis på denne teori.[ afklare ] ( Curry-Howard korrespondance ), og komponenterne i udviklingsprocessen, der er karakteristiske for imperativ programmering ( design , refactoring , debugging og andre) er udelukket i dette tilfælde: programmet designer og beviser sig selv[ afklare ] .
Deklarativ programmering omfatter også ofte funktionel og logisk programmering . På trods af det faktum, at programmer på sådanne sprog ofte indeholder algoritmiske komponenter, er arkitektur i imperativ forstand (som noget adskilt fra kodning) også fraværende i dem: programskemaet er direkte en del af den eksekverbare kode [1] .
Sprogorienteret programmering har til formål at øge niveauet af deklarativitet .
"Rent deklarative" computersprog er ofte Turing -ufuldstændige, da det teoretisk set ikke altid er muligt at generere eksekverbar kode fra en deklarativ beskrivelse. Dette fører nogle gange til uenighed om rigtigheden af udtrykket "erklærende programmering" (mindre kontroversielt er "erklærende beskrivelse af løsningen" eller tilsvarende "deklarativ beskrivelse af problemet").