# Programació declarativa

En informàtica, la programació declarativa és un paradigma de programació —un estil de construcció de l'estructura i els elements dels programes informàtics— que expressa la lògica d'un càlcul sense descriure el seu flux de control.
Molts llenguatges que apliquen aquest estil intenten minimitzar o eliminar els efectes secundaris descrivint el que ha d'aconseguir el programa en termes del domini del problema, en lloc de descriure com aconseguir-ho com una seqüència de les primitives del llenguatge de programació (la manera com es deixa). fins a la implementació de la llengua). Això contrasta amb la programació imperativa, que implementa algorismes en passos explícits.
La programació declarativa sovint considera els programes com a teories d'una lògica formal, i els càlculs com a deduccions en aquest espai lògic. La programació declarativa pot simplificar molt l'escriptura de programes paral·lels.
Els llenguatges declaratius comuns inclouen els llenguatges de consulta de bases de dades (per exemple, SQL, XQuery), expressions regulars, programació lògica (per exemple, Prolog, Datalog, programació de conjunts de respostes), programació funcional, gestió de configuracions i sistemes de modelització algebraica.

## Definició

La programació declarativa sovint es defineix com qualsevol estil de programació que no sigui imprescindible. Una sèrie d'altres definicions comunes intenten definir-la simplement contrastant-la amb la programació imperativa. Per exemple:
* Un programa d'alt nivell que descriu el que ha de fer un càlcul.
* Qualsevol llenguatge de programació que no tingui efectes secundaris (o, més concretament, sigui referencialment transparent).
* Un llenguatge amb una clara correspondència amb la lògica matemàtica.
Aquestes definicions es superposen substancialment.
La programació declarativa és un estil de programació no imperatiu en el qual els programes descriuen els resultats desitjats sense enumerar explícitament les ordres o passos que s'han de realitzar. Els llenguatges de programació funcional i lògica es caracteritzen per un estil de programació declaratiu. En programació lògica, els programes consisteixen en frases expressades en forma lògica, i la computació utilitza aquestes frases per resoldre problemes, que també s'expressen en forma lògica.
En un llenguatge funcional pur, com Haskell, totes les funcions no tenen efectes secundaris, i els canvis d'estat només es representen com a funcions que transformen l'estat, que es representa explícitament com un objecte de primera classe al programa. Encara que els llenguatges funcionals purs no són imperatius, sovint proporcionen una facilitat per descriure l'efecte d'una funció com una sèrie de passos. Altres llenguatges funcionals, com Lisp, OCaml i Erlang, admeten una barreja de programació procedimental i funcional.
Alguns llenguatges de programació lògica, com Prolog, i llenguatges de consulta de bases de dades, com SQL, encara que en principi declaratius, també admeten un estil de programació procedimental.

## Referències

* ↑ «declarative language» (en anglès). FOLDOC, 17-05-2004. [Consulta: 7 setembre 2023].
* ↑ Sebesta, Robert. Concepts of programming languages (en anglès). Pearson, 2016. ISBN 978-0-13-394302-3. OCLC 896687896.
* ↑ «Imperative programming: Overview of the oldest programming paradigm» (en anglès americà). IONOS Digital Guide, 21-05-2021. [Consulta: 23 maig 2023].
* ↑ «DAMP 2009: Workshop on Declarative Aspects of Multicore Programming» (en anglès). Cse.unsw.edu.au, 20-01-2009. Arxivat de l'original el 13 September 2013. [Consulta: 15 agost 2013].