Comparison of multi-paradigm programming languages
This article needs additional citations for verification. (July 2007) |
A multiparadigm 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.
Two paradigms
- dataflow, visual
- functional, imperative
- functional, logic
- functional, object-oriented (class-based)
- functional, visual
- imperative, object-oriented (class-based)
- object-oriented (class-based), (prototype-based)
- Metaobject protocols [citation needed]
- object-oriented (class-based), visual
Three paradigms
- 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)
- BETA [citation needed]
- Common Lisp [citation needed]
- J [citation needed]
- Perl [citation needed]
- Pliant [citation needed]
- Python [4]
- Tcl with itcl or XOTcl extensions [citation needed]
- functional, imperative, object-oriented (prototype-based)
- ECMAScript [citation needed]
- Lua [citation needed]
- Tcl with Snit extension [citation needed]
- generic (template metaprogramming), imperative, object-oriented (class-based)
Four paradigms
- functional, generic (template metaprogramming), imperative, object-oriented (class-based)
- functional, imperative, concurrent (Actor model), object-oriented (prototype-based)
- functional, imperative, concurrent, 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, pipeline, object-oriented (class-based)
Five paradigms
- concurrent (rendezvous and monitor-like based), distributed, generic, imperative, object-oriented (class-based)
Eight paradigms
- concurrent, constraint, dataflow, distributed, functional (evaluation: eager, lazy), imperative, logic, object-oriented (class-based)
See also
References
- ^ PHP Manual, Chapter 17. Functions
- ^ PHP Manual, Chapter 19. Classes and Objects (PHP 5)
- ^ Philippsen, Michael (1995). "Imperative Concurrent Object-Oriented Languages".
- ^ http://www-128.ibm.com/developerworks/library/l-prog.html
- ^ The Little JavaScripter demonstrates fundamental commonality with Scheme, a functional language.
- ^ Object Oriented Programming in JavaScript gives an overview of object-oriented programming techniques in JavaScript.
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 9: Tasks and Synchronization
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3 Annex E: Distributed Systems
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 12: Generic Units
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 6: Subprograms
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, 3.9 Tagged Types and Type Extensions
- Multiparadigm Design for C++, by Jim Coplien, 1998.
- Concepts, Techniques, and Models of Computer Programming, by Peter Van Roy and Seif Haridi, 2004.