Kevin Sookocheff contrasts functional programming with its imperative cousin:
Functional programming is a form of declarative programming that expresses a computation directly as pure functional transformation of data. A functional program can be viewed as a declarative program where computations are specified as pure functions.
I think that if you’re a set-based SQL developer, functional programming languages will make the most intuitive sense. They’re a bit harder to wrap your mind around if you’ve grown up as an imperative C-style developer, but are still worth the effort.