A multi-paradigm programming language is a programming language that supports more than one programming paradigm. As Leda designer Tim Budd holds it: The idea of a multiparadigm language is to provide a framework in which programmers can work in a variety of styles, freely intermixing constructs from different paradigms. 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.
An 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.
Paradigm summaries
This only serves for quick reference for programming paradigms listed here
Two paradigms
Three paradigms
- imperative, generic, object-oriented (class-based)
- concurrent, dataflow, functional
- concurrent, functional, distributed
- concurrent, functional, logic
- concurrent, imperative, object-oriented (class-based)
- dataflow, object-oriented (class-based), visual
- functional, imperative, logic
- functional, imperative, object-oriented (class-based)
- functional, imperative, object-oriented (prototype-based)
- generic (template metaprogramming), imperative, object-oriented (class-based)
Four paradigms
- functional (only lambda support), imperative, generic, object-oriented (class-based)
- functional, imperative, generic (template metaprogramming), object-oriented (class-based)
- functional, imperative, concurrent (Actor model), object-oriented (class-based)
- functional, imperative, concurrent (Actor model), object-oriented (prototype-based)
- functional, imperative, logic, object-oriented (class-based)
- functional, imperative, object-oriented (prototype-based), dialected
- imperative, logic, object-oriented (class-based), rule-based
- functional, imperative, object-oriented (class-based), reflective
- Common Lisp (although there are other paradigms implemented as libraries)
Five paradigms
- functional, imperative, generic, object-oriented (class-based), metaprogramming
- functional, imperative, object-oriented (class-based), metaprogramming, reflective
- concurrent (rendezvous and monitor-like based), distributed, generic, imperative, object-oriented (class-based)
- functional, imperative, pipeline, object-oriented (class-based), reflective
- functional, generic (template metaprogramming), imperative, object-oriented (class-based), reflective
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.