But no matter what a program’s individual style may be, the big picture divisions around paradigms are almost always evident at first glance of any program.

    Typical paradigm-level code categories include procedural, object-oriented (OO/classes), and functional (FP):

    Some languages are heavily slanted toward one paradigm—C is procedural, Java/C++ are almost entirely class oriented, and Haskell is FP through and through.

    But many languages also support code patterns that can come from, and even mix and match from, different paradigms. So called “multi-paradigm languages” offer ultimate flexibility. In some cases, a single program can even have two or more expressions of these paradigms sitting side by side.