less_retarded_wiki

main page, file list (581), source, all in md+txt+html+pdf, report abuse, stats, random article, consoomer version

Paradigm

Paradigm (from Greek paradeigma, "pattern", "example") of a programming language means the very basic concepts that are used as a basis for performing computation in that language. Among popular paradigms are e.g. the imperative, object oriented and functional, but there are many more; we may see every paradigm as a set of basic ideas and mathematical models (e.g. models of computation) that form the foundation of how the language works; these are typically additionally also accompanied by kind of "philosophy"/mindset/recommendations that will likely be used by the programmer who uses the language. Just to be clear, paradigm does NOT encompass other than purely technical aspects of performing computation (i.e. it does NOT include e.g. political, artistic or other ideas such as "eco-friendly language", "joke language" etc.). Just as e.g. music genres, paradigms are greatly fuzzy, have different definitions, 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.

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 simple concept of issuing "commands" to a computer -- though it is nowadays almost always combined with some other bullshit paradigm, most notably object orientation. Prevalence of imperative paradigm is probably caused by several factors, most importantly 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.

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.