Paradigm originally meant something like 'exemplar'/'pattern'/'template' but in the last 30 years has come to mean something more like 'zeitgeist'/'worldview'. In the former sense, ThereAreExactlyThreeParadigms, this page as about the second sense, but it will be useful to give the defining example of each way of thinking. In no particular order
A programming paradigm provides for the programmer the means and structure for the execution of a program.
Programmers can think of programs
Many programming paradigms are as well-known for what they do not do as for what they do. This avoidance of certain techniques can make it easier to prove theorems about a program's correctness and to simply understand its behavior, without limiting it.
'Functional programming is a style of programming that emphasizes the evaluation of expressions, rather than execution of commands. The expressions in these language are formed by using functions to combine basic values. A functional language is a language that supports and encourages programming in a functional style.' (from the FP FAQ)
powerful for modeling and theorem proving. "Variables" describe whole domains rather than individual elements. Rules are often bi-directional, allowing expansions before reductions. A program is an functional application that gets reduced to canonical form. Falls somewhere between LogicProgramming and FunctionalProgramming.
New paradigms are often not well received by those accustomed to earlier styles.
A programming language can support multiple paradigms. C++ is designed to support elements of procedural programming, object-based programming, object-oriented programming, and generic programming.
Designers and programmers can decide how to build a program using any or a mix of these paradigm elements.
Thus a programmer can write a program in C++ that