Declarative programming is a programming paradigm characterized by describing the target state (or even just the problem itself in some cases) as opposed to specifying the concrete steps needed to reach that target state. The specific steps usually then get generated automatically at Compile Time.