This article is about the definition of the term 'programming model'. For classification of programming languages, see Programming paradigm.
A programming model is an execution model coupled to an API or a particular pattern of code. In this style, there are actually two execution models in play: the execution model of the base programming language and the execution model of the programming model. An example is Spark where Java is the base language, and Spark is the programming model. Execution may be based on what appear to be library calls. Other examples include the POSIX Threads library and Hadoop's MapReduce.[1] In both cases, the execution model of the programming model is different from that of the base language in which the code is written. For example, the C programming language has no behavior in its execution model for input/output or thread behavior. But such behavior can be invoked from C syntax, by making what appears to be a call to a normal C library.
What distinguishes a programming model from a normal library is that the behavior of the call cannot be understood in terms of the language the program is written in. For example, the behavior of calls to the POSIX thread library cannot be understood in terms of the C language. The reason is that the call invokes an execution model that is different from the execution model of the language. This invocation of an outside execution model is the defining characteristic of a programming model, in contrast to a programming language.
In parallel computing, the execution model often must expose features of the hardware in order to achieve high performance. The large amount of variation in parallel hardware causes a concurrent need for a similarly large number of parallel execution models. It is impractical to make a new language for each execution model, hence it is a common practice to invoke the behaviors of the parallel execution model via an API. So, most of the programming effort is done via parallel programming models rather than parallel languages. The terminology around such programming models tends to focus on the details of the hardware that inspired the execution model, and in that insular world the mistaken belief is formed that a programming model is only for the case when an execution model is closely matched to hardware features.[2]
^IBM. "What is MapReduce". IBM. Retrieved 2020-04-19.
A programmingmodel is an execution model coupled to an API or a particular pattern of code. In this style, there are actually two execution models in...
convenient to express algorithms and their composition in programs. The value of a programmingmodel can be judged on its generality: how well a range of different...
standard Go—for system programming, with a concurrent programmingmodel based on CSP Haskell—concurrent, and parallel functional programming language Hume—functional...
understand program behavior, and to prove theorems about program correctness. Programming paradigms can also be compared with programmingmodels, which allows...
In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. With this paradigm...
In computer programming, dataflow programming is a programming paradigm that models a program as a directed graph of the data flowing between operations...
logic programming systems do not follow deductively from previous steps (see Indeterminacy in concurrent computation). Recently, logic programming has been...
science, declarative programming is a programming paradigm—a style of building the structure and elements of computer programs—that expresses the logic...
programming team is a team of people who develop or maintain computer software. They may be organised in numerous ways, but the egoless programming team...
concurrent and parallel programming languages, categorizing them by a defining paradigm. Concurrent and parallel programming languages involve multiple...
they can readily be extended to logic programming, including the more general disjunctive logic programming. Model elimination is closely related to resolution...
mathematical model whose requirements and objective are represented by linear relationships. Linear programming is a special case of mathematical programming (also...
written in a programming language for use with a quantum computer or a quantum processor. With quantum processor based systems, quantum programming languages...
Constraint programming takes its root from and can be expressed in the form of constraint logic programming, which embeds constraints into a logic program. This...
Dynamic Programming in Macroeconomic Models." An introduction to dynamic programming as an important tool in economic theory. Dynamic Programming: from...
Shakespeare Programming Language (SPL) is an esoteric programming language designed by Jon Åslund and Karl Wiberg. Like the Chef programming language, it...
Cooper (1961) Management models and industrial applications of linear programming, Wiley, New York SM Lee (1972) Goal programming for decision analysis,...
parallel programming include an open standard called OpenHMPP for hybrid multi-core parallel programming. The OpenHMPP directive-based programmingmodel offers...
The Model Cities Program was an element of U.S. President Lyndon Johnson's Great Society and War on Poverty. The concept was presented by labor leader...
used in scientific and engineering settings. Modern programming languages that support array programming (also known as vector or multidimensional languages)...
parallel programmingmodel that would allow the programming to target the model without knowing the specifics of the target architecture. This model would...