[terminology] Functional, Declarative, and Imperative Programming