La programmazione dichiarativa è un paradigma del linguaggio di programmazione che si basa sulla logica e si concentra maggiormente su ciò che un programma dovrebbe realizzare piuttosto che su come dovrebbe essere realizzato. Ciò contrasta direttamente con la programmazione imperativa, che descrive in grande dettaglio ogni fase di un comando o funzione di programmazione. Un linguaggio di programmazione dichiarativo avrà alcune linee guida di base basate sulla logica in modo che il programma possa funzionare, ma non fornisce comandi specifici per ogni passaggio. Riceve invece istruzioni su ciò che deve essere eseguito (il risultato finale di una sezione di codice, ad esempio) e il programma segue una progressione logica per completare tale attività.
La programmazione dichiarativa appartiene ai linguaggi specifici del dominio (DSL), non a quelli generici. I linguaggi specifici del dominio si applicano solo a un dominio particolare: HTML, ad esempio, è un DSL; si applica solo al codice HTML per le pagine web. SQL (Structured Query Language, per la gestione del database) è un altro. Ciò consente ai programmi dichiarativi di completare logicamente un'attività: poiché il programma si applica a un dominio specifico, non è necessario che sia particolarmente flessibile o modificabile.
Programmazione dichiarativa vs. programmazione imperativa
La programmazione imperativa si applica a linguaggi come Java e C, che richiedono istruzioni dettagliate per ogni parte di codice. Perché qualcosa possa essere cambiato, deve essere programmato in qualche modo. Ciò consente agli sviluppatori di apportare modifiche al programma quando necessario. La programmazione dichiarativa non è così flessibile.
Tuttavia, la programmazione dichiarativa è più facile da leggere ed è meno ingombra. Può essere difficile da capire per gli sviluppatori perché il linguaggio non spiega come è stato completato un processo, ma è un paradigma utile per i programmi che appartengono a un dominio specifico che ha una logica particolare.