Comparison of multi-paradigm programming languages

This is an old revision of this page, as edited by 68.23.18.160 (talk) at 11:11, 30 November 2005 (Eight paradigms: Conformed Wiki-links to Wikipedia standards: in an article, only the first instance of a term is to be Wiki-linked.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

A multiparadigm programming language is a programming language that supports more than one programming paradigm. It allows, as described by Bjarne Stroustrup, "a program using more than one programming styles". The design goal of such languages is to allow programmers to use the best tool for a job, admitting that no one paradigm solves all problems in the easiest or most efficient way.

The most aggressive example is Oz, which has subsets that are a logic language (Oz descends from logic programming), a functional language, an object-oriented language, a dataflow concurrent language, and more. Oz was designed over a ten-year period to combine in a harmonious way concepts that are traditionally associated with different programming paradigms.

Multiparadigm languages

Languages can be grouped by the number and types of paradigms supported.

Two paradigms

Three paradigms

Four paradigms

  • functional, imperative, concurrent, object-oriented (class-based)
  • functional, imperative, logic-based, object-oriented (class-based)
  • imperative, logic-based, object-oriented (class-based), rule-based
  • functional, imperative, object-oriented (prototype-based), dialected

Five paradigms

  • concurrent, distributed, generic (template metaprogramming), imperative, object-oriented (class-based)

Eight paradigms

See also

References

  • Multiparadigm Design for C++, by Jim Coplien, 1998.
  • Concepts, Techniques, and Models of Computer Programming, by Peter Van Roy and Seif Haridi, 2004.