Comparison of multi-paradigm programming languages
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.
Two examples are Ada and C++, whose handle both object-oriented and generic programming. Another 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 so forth. 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, with paradigms.
- Ada - imperative, object-oriented
- APL - functional, imperative
- BETA - functional, imperative, object-oriented
- C++ - imperative, object-oriented, generic (template metaprogramming)
- Common Lisp - functional, object-oriented
- D - imperative, object-oriented, generic (template metaprogramming)
- Dylan - functional, object-oriented
- Lua - functional, imperative, object-oriented, prototype-based
- Objective Caml - functional, object-oriented
- Oz - concurrent, constraint, distributed, functional (evaluation: eager, lazy), imperative, logic, object-oriented
- Pliant - functional, imperative, object-oriented
- Python - functional, object-oriented
- REBOL - functional, object-oriented, prototype-based
See also
Books
- Multiparadigm Design for C++, by Jim Coplien, 1998.
- Concepts, Techniques, and Models of Computer Programming, by Peter Van Roy and Seif Haridi, 2004.
External links
- MultiParadigmProgrammingLanguage on the C2 wiki
- Open Directory: Programming: Languages: Multiparadigm