Comparing Paradigms
Imperative : actions can be broken down into sequences of commands. State of the computation may be very important in thinking about the program.
Functional: the program can be specified in terms of a collection of input-output relationships.
Rule-based: the computation is best described in terms of matching patterns in the data, and then taking appropriate actions for each pattern.
Logic: the problem and solution can be described using mathematical logic.