Declarative Expression¶
Describing WHAT result is desired rather than HOW to compute it enables the underlying system to choose optimal execution strategies and abstracts away incidental complexity.
Tension Addressed¶
Abstraction vs. Concreteness
Recognizable As¶
SQL queries, HTML/CSS, configuration over code, constraint solvers, build specifications, infrastructure-as-code
Canonical Sources¶
Kowalski, "Algorithm = Logic + Control" (1979); SQL origins (Codd, 1970s); Prolog development (1970s)
Transfers To¶
Database Queries, UI Layout, Build Systems, Infrastructure Automation, Constraint Satisfaction
Declarative approaches trade control for optimization opportunity: the system can reorder, parallelize, or cache as it sees fit.
Related Concepts¶
- Abstraction - Software Architecture