Deklarativní programování je programovací paradigma, ve kterém je specifikována specifikace řešení problému, to znamená, že je popsán očekávaný výsledek, a nikoli způsob, jak jej získat. Opakem deklarativního je imperativní programování , ve kterém je na té či oné úrovni detailů vyžadován popis sekvence kroků k vyřešení problému. HTML a SQL jsou běžně uváděny jako příklady deklarativních jazyků .
Deklarativní programy nepoužívají pojem stavu, zejména neobsahují proměnné a operátory přiřazení , je zajištěna referenční transparentnost . Nejblíže „čistě deklarativnímu“ programování je psaní spustitelných specifikací . V tomto případě je program formální teorií a jeho provedení je zároveň automatickým důkazem této teorie.[ objasnit ] ( korespondence Curry-Howard ) a součásti vývojového procesu charakteristické pro imperativní programování ( design , refaktoring , ladění a další) jsou v tomto případě vyloučeny: program navrhuje a osvědčuje se[ upřesnit ] .
Deklarativní programování také často zahrnuje funkční a logické programování . Navzdory skutečnosti, že programy v takových jazycích často obsahují algoritmické komponenty, architektura v imperativním smyslu (jako něco odděleného od kódování) v nich také chybí: programové schéma je přímo součástí spustitelného kódu [1] .
Jazykově orientované programování je zaměřeno na zvýšení úrovně deklarativnosti .
„Čistě deklarativní“ počítačové jazyky jsou často Turingovy neúplné, protože teoreticky není vždy možné vygenerovat spustitelný kód z deklarativního popisu. To někdy vede ke sporům o správnost termínu „deklarativní programování“ (méně kontroverzní je „deklarativní popis řešení“ nebo ekvivalentně „deklarativní popis problému“).