Declaratief programmeren is een programmeertaalparadigma dat is gebaseerd op logica en meer gericht is op wat een programma zou moeten bereiken dan op details over hoe dat zou moeten worden bereikt. Dit staat in schril contrast met imperatief programmeren, dat elke stap van een programmeeropdracht of -functie zeer gedetailleerd beschrijft. Een declaratieve programmeertaal heeft een aantal onderliggende richtlijnen die op logica zijn gebaseerd, zodat het programma kan werken, maar het geeft geen specifieke opdrachten voor elke stap. In plaats daarvan ontvangt het instructies voor wat er moet worden bereikt (bijvoorbeeld het eindresultaat van een gedeelte van de code), en het programma volgt een logische voortgang om die taak te voltooien.
Declaratief programmeren hoort bij domeinspecifieke talen (DSL), niet bij algemene talen. Domeinspecifieke talen zijn alleen van toepassing op één bepaald domein: HTML is bijvoorbeeld een DSL; het is alleen van toepassing op HTML-code voor webpagina’s. SQL (Structured Query Language, voor databasebeheer) is een andere. Dit maakt het voor declaratieve programma’s mogelijk om een taak logisch te voltooien – omdat het programma van toepassing is op één specifiek domein, hoeft het niet bijzonder flexibel of veranderlijk te zijn.
Declaratieve programmering versus imperatieve programmering
Noodzakelijk programmeren is van toepassing op talen als Java en C, waarvoor gedetailleerde instructies voor elk stuk code vereist zijn. Om iets te veranderen, moet het op de een of andere manier worden geprogrammeerd. Hierdoor kunnen ontwikkelaars indien nodig wijzigingen in het programma aanbrengen. Declaratief programmeren is niet zo flexibel.
Declaratieve programmering is echter gemakkelijker te lezen en minder rommelig. Het kan moeilijk zijn voor ontwikkelaars om het te begrijpen omdat de taal niet uitlegt hoe een proces is voltooid, maar het is een handig paradigma voor programma’s die tot een specifiek domein behoren met een bepaalde logica.