Multi-paradigm programming language
|
|
This article needs additional citations for verification.
Please help improve this article by adding reliable references. Unsourced material may be challenged and removed. (July 2007) |
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)
- imperative,visual,object-oriented
- 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[citation needed] (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
- ^ PHP Manual, Chapter 17. Functions
- ^ PHP Manual, Chapter 19. Classes and Objects (PHP 5)
- ^ Charming Python: Functional programming in Python, Part 1
- ^ 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.
- ^ Martin Odersky et al, An Overview of the Scala Programming Language, 2nd Edition
- ^ 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.
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History