Declarative programming is a programming paradigm that expresses the logic of a computation without describing its control flow. This paradigm often considers programs as theories of a formal logic, and computations as deductions in that logic space. Declarative programming is often defined as any style of programming that is not imperative. Common declarative languages include those of database query languages (SQL), logic programming, functional programming, etc. A program that describes what computation should be performed and not how to compute it. Non-imperative, non-procedural. Any programming language that lacks side effects(example: a function might modify a global variable or static variable, modify one of its arguments, raise an exception,). A language with a clear correspondence to mathematical logic.