Home C++/Castor
Resource for Multiparadigm programming techniques

Programming paradigms and computational models

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.

       ::: Headlines :::
  Version 1.1 is now available for download. See details of what's new.
NEW! Videos on 1.1
See the two part video tutorial covering the new features in 1.1 with examples.
  Understand the concepts behind LP, how to represent them in C++ and how LP blends with the other paradigms in C++.
  Discuss issues, collaborate, consider improvements, share code etc.