Computational Model:
A theoretical model describing how computation can
be performed.
Many computational
models exist with varying degrees of computational power. Computational power,
here, refers to the ability to solve various kinds of problems and not speed of
computation. Examples of computational models include Lambda Calculus, Turing
machine, Predicate Calculus, Linear bounded automata, Finite automata, Moore
machine, Stack machine etc.
Programming Paradigm:
Timothy Budd describes a programming paradigm as ".. a way of
conceptualizing what it means to perform computation, of structuring and
organizing how tasks are to be carried out on a computer" in his seminal
book on
multiparadigm programming.
A programming paradigm is more real, in some sense,
than a computational model as it has to be realized on computer using a
programming language, a library or a tool. It is not limited to simulating
computational models on a computer. For example the object-oriented paradigm or
generic programming are not computational models but facilities that
significantly impact the design and implementation of software.
Examples of programming paradigms include the
imperative paradigm (based on Turing machine), functional paradigm (based on
lambda calculus), logic paradigm(based on Predicate calclus), constraint
paradigm, object-oriented prgoramming, generic programming etc.
Multiparadigm Programming (MP):
The use of a combination of programming paradigms in
programming.
Some languages tend to subscribe more rigorously
to a single programming paradigm. For instance Smalltalk and Java tend
to enforce the object-oriented paradigm. Other languages like C++, Scala
and Leda take a relatively neutral stance by supporting but not enforcing
object-orientation. Since every paradigm comes with its own strengths and
weaknesses, no single paradigm offers the simplest, most elegant and
efficient solution to every problem. This quite naturally motivates the need to
use a combination of paradigms in a manner that best fits the problem(s) at hand.
Just as there are many approaches to supporting object-oriented and functional
programming, there is no single approach to MP. However it is key for any good MP system
to :
1) Make the paradigm boundaries seamless.
2) Allow paradigms to be mixed and matched freely in a fine grained manner.
What is this website for ?:
Multiparadigm programming is very much an
infant discipline in Computer Science. This web site is dedicated to ideas,
source code, articles etc. dealing with MP. Topics are not restricted to any
particular language. If you wish to contribute any
content (articles/code), please send a message to
admin AT mpprogramming DOT c o m.
This website provides free information for
programmers. Authors are free to republish their content elsewhere. Respective
authors are responsibile of ensuring their content is not in violation of
copyright laws.
|