In informatica, la programmazione dichiarativa è un paradigma di programmazione secondo cui la logica della computazione viene espressa senza descrivere il suo controllo di flusso.[1]
Molti linguaggi che applicano questo stile mirano a minimizzare o eliminare eventuali effetti collaterali descrivono che cosa il programma deve compiere in termini dello specifico dominio del problema, piuttosto che descrivere come compierlo sotto forma di una sequenza di primitive;[2] il "come" viene lasciato all'implementazione del linguaggio. Questo è in contrapposizione con la programmazione imperativa, che implementa algoritmi descritti esplicitamente nei loro passaggi.[3]
La programmazione dichiarativa spesso considera i programmi come teorie di logica formale che definiscono un certo spazio logico, all'interno del quale le computazioni sono considerate delle deduzioni. Questo paradigma può permettere una grande semplificazione nella scrittura di programmi di calcolo parallelo.[4]
Alcuni linguaggi dichiarativi comuni sono i linguaggi di interrogazione (come SQL, XQuery), le espressioni regolari, la programmazione logica (come Prolog, Datalog, answer set programming), la programmazione funzionale, e i sistemi di gestione di configurazioni.