Programming paradigm
From Wikipedia, the free encyclopedia
Programming paradigms are a way to classify
programming languages according to the style of
computer programming. Features of various programming languages determine which programming paradigms they belong to; as a result, some languages fall into only one paradigm, while others fall into multiple paradigms. Some paradigms are concerned primarily with implications for the
execution model of the language, such as allowing
side effects, or whether the sequence of operations is defined by the execution model. Other paradigms are concerned primarily with the way that code is organized, such as grouping code into units along with the state that is modified by the code. Yet others are concerned primarily with the style of syntax and grammar.
Common programming paradigms include
imperative which allows side effects,
functional which does not allow side effects,
declarative which does not state the order in which operations execute,
object-oriented which groups code together with the state the code modifies,
procedural which groups code into functions,
logic which has a particular style of execution model coupled to a particular style of syntax and grammar, and
symbolic programming which has a particular style of syntax and grammar.
[1][2][3]
For example, languages that fall into the imperative paradigm have two main features: they state the order in which operations take place, with constructs that explicitly control that order, and they allow side effects, in which state can be modified at one point in time, within one unit of code, and then later read at a different point in time inside a different unit of code. The communication between the units of code is not explicit. Meanwhile, in object-oriented programming, code is organized into
objects that contain state that is only modified by the code that is part of the object. Most object oriented languages are also imperative languages. In contrast, languages that fit the declarative paradigm do not state the order in which to execute operations. Instead, they supply a number of operations that are available in the system, along with the conditions under which each is allowed to execute. The implementation of the language's execution model tracks which operations are free to execute and chooses the order on its own.