Declarative Programming
Declarative programming is a programming paradigm that emphasizes a style of building the structure of elements of computer programs that expresses the logic of a computation without describing its control flow.
Many languages that apply this style attempt to minimize or eliminate side effects by describing what the program must accomplish in terms of problem domain, rather than describing how to accomplish it as a sequence of the programming language primitives. This is in contrast to imperative programming, which implements algorithms in explicit steps.
The main branches of declarative programming include: