Multi-paradigm programming language
Encyclopedia : M : MU : MUL : Multi-paradigm programming language
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 style". 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 ambitious 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.
Contents
Multiparadigm languages
Languages can be grouped by the number and types of paradigms supported.
Two paradigms
- dataflow, visual
- *LabVIEW
- functional, imperative
- *APL
- functional, logic
- *ALF
- functional, object-oriented (class-based)
- *Common Lisp
- *Dylan
- *Sather
- functional, visual
- *Spreadsheets
- imperative, object-oriented (class-based)
- *PHP
Three paradigms
- concurrent, dataflow, functional
- * SISAL
- concurrent, functional, logic
- * Curry
- concurrent, imperative, object-oriented (class-based)
- *ChucK
- dataflow, object-oriented (class-based), visual
- * Prograph
- functional, imperative, object-oriented (class-based)
- * BETA
- * J
- * Perl
- * Pliant
- * Python
- * Tcl (class-based with the itcl extension, object-based with the xotcl extension, prototype-based with the snit extension)
- functional, imperative, object-oriented (prototype-based)
- * JavaScript
- * Lua
- * Tcl (the snit extension)
- generic (template metaprogramming), imperative, object-oriented (class-based)
- * C++
- * D
Four paradigms
- functional, generic (template metaprogramming), imperative, object-oriented (class-based)
- * Objective Caml
- functional, imperative, actor, object-oriented (prototype-based)
- * Io
- functional, imperative, concurrent, object-oriented (class-based)
- * Ruby
- functional, imperative, logic, object-oriented (class-based)
- * Leda
- functional, imperative, object-oriented (prototype-based), dialected
- * REBOL
- imperative, logic, object-oriented (class-based), rule-based
- * ROOP
Five paradigms
- concurrent, distributed, generic, imperative, object-oriented (class-based)
- * Ada
Eight paradigms
- concurrent, constraint, dataflow, distributed, functional (evaluation: eager, lazy), imperative, logic, object-oriented (class-based)
- * Oz
- ** Mozart Programming System a multiplatform Oz
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.
From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.
