The Principal Programming Paradigms

"More is not better (or worse) than less, just different."

The chart classifies programming paradigms according to their kernel abstractions can be defined). Kernel languages are ordered according to the creative extension principle: a new concept is added when it cannot be encoded with only local transformations. Two languages that implement programmer, because they make different choices about what programming techniques and styles to facilitate. the same paradigm can nevertheless have very different "flavors" for the languages (the small core language in which all the paradigm’s without interference from other paradigms. It does not mean that there is a perfect fit between the language and the paradigm. It is not enough that libraries have been written in the language to support the paradigm.

When a language is mentioned under a paradigm, it means that part of the language is intended (by designers) to support interference from other paradigms. It does not mean that there is a perfect fit between the language and the paradigm. It is not enough that libraries have been written in the language to support the paradigm.The language’s kernel language should support the paradigm. When there is a family of related languages, usually only one member of the family is mentioned to avoid clutter. The absence of a language does not imply any kind of value judgment.

State is the ability to remember information, or more precisely, to store a sequence of values in time. Its expressive power is strongly influenced by the paradigm that contains it. which differ in whether the state is unnamed or named, deterministic or nondeterministic, and sequential or concurrent. The least expressive is functional programming (threaded state, e.g., DCGs and monads:unnamed, deterministic, and sequential). Adding concurrency gives declarative concurrent programming (e.g., synchrocells: unnamed,deterministic, and concurrent). Adding non deterministic choice gives concurrent logic programming (which uses stream mergers: unnamed,(e.g., client/server). Named state is important for modularity.nondeterministic, and concurrent). Adding ports or cells, respectively,gives message passing or shared state (both are named, nondeterministic,and concurrent). Nondeterminism is important for real−world interaction

ToDo fix this post.