By programming language's paradigm (from Greek paradeigma, "pattern", "example") we mean the very basic concepts used as a basis for performing computation in that language. Among the most popular paradigms we'll find for example the imperative, object oriented and functional, but there exist many others; we may view every paradigm as a set of basic ideas, principles and mathematical models (e.g. models of computation, data types, forms of expressions etc.) that form the foundation of how the whole language works; these foundations are subsequently also accompanied by a kind of "programming philosophy" (we'll oftentimes hear sentences such as "everything is X" where X may be number, object, array, list etc.), a naturally emerging "mindset", a set of recommendations the programmer should follow when using the language. But let it be set straight that paradigm will NOT include other than purely technical, engineering aspects of computation, i.e. artistic or political ideas (such as "eco-friendlieness", "anti-fascism", ...) are indeed not part of programming paradigm. Nevertheless, although of technical nature, aspects of paradigms are subjective, for example the question of drawing borders between them -- just like music genres or human races, paradigms are fuzzy concepts, they have different definitions in different books, come in different flavors and are often combined; sometimes it's unclear how to classify paradigms (if one strictly falls under another etc.) or even if something is or isn't a paradigm at all.
For example the functional paradigm is built on top of lambda calculus (one of many possible mathematical systems that can be used to perform general calculations) which performs calculations by combining pure mathematical functions -- this then shapes the language so that a programmer will mostly be writing mathematical functions in it, AND this also usually comes with the natural "philosophy" of subsequently viewing everything as a function, even such things as loops or numbers themselves. In contrast object oriented (OOP) paradigm tries to solve problems by constructing a network of intercommunicating "objects" and so in OOP we tend to see most things as objects.
Most common practically used paradigm is the imperative, one based on the plain and simple concept of issuing "commands" to the computer -- even though nowadays it almost always gets combined with some other bullshit paradigm, most infamously object orientation. Prevalence of imperative paradigm is probably due to more than one factor, most important of which is most likely its simplicity (it's possibly the closest to human thinking, easiest to learn, predict etc.), efficiency thanks to being closest to how computers actually work (compilers have very small overhead in translation, they perform less "magic"), historically established status (which is related to simplicity; imperative was the first natural approach to programming) etc. Even more abstract paradigms are ultimately built on top of imperative system, so imperative is just present everywhere.
List of notable paradigms follows (keep in mind the subjectivity and fuzziness that affect classification):
The list enumerates just the most important paradigms, other possible paradigms and "almost" paradigms may just include anything connected to any largely useful concept, e.g.: recursive, concurrent, structured, data oriented, visual, set-based, table-based, metaprogramming, nondeterministic, value-level, message-based, generic, reflective, constraint programming, genetic, term rewriting, string-based, symbolic etcetc.
Powered by nothing. All content available under CC0 1.0 (public domain). Send comments and corrections to drummyfish at disroot dot org.