From Wikipedia, the free encyclopedia
A multi-paradigm programming language is a programming language that supports more than one programming paradigm. As Lead 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.
[edit] Multiparadigm languages
Languages can be grouped by the number and types of paradigms supported.
[edit] Paradigm summaries
A concise reference for the programming paradigms listed in this article.
[edit] Two paradigms
[edit] Three paradigms
- 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)
[edit] Four paradigms
- imperative, generic, reflective, 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
[edit] Five paradigms
- functional (only lambda support), imperative, generic, reflective, object-oriented (class-based)
- 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
[edit] Eight paradigms
[edit] See also
[edit] 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.