Programming models bridge the gap between the underlying hardware architecture and the supporting layers of software available to applications.
Programming models are different from both programming languages and application programming interfaces (APIs).
Specifically, a programming model is an abstraction of the underlying computer system that allows for the expression of both algorithms and data structures.
In comparison, languages and APIs provide implementations of these abstractions and allow the algorithms and data structures to be put into practice – a programming model exists independently of the choice of both the programming language and the supporting APIs.
Casiano Rodriguez León 2015-01-07