This MedLibrary.org supplementary page on Multi-paradigm programming language is provided directly from the open source Wikipedia as a service to our readers. Please see the note below on authorship of this content, as well as the Wikipedia usage guidelines. To search for other content from our encyclopedia supplement, please use the form below:
Related Sponsors
| It has been suggested that this article or section be merged into Programming paradigm. () |
| 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.
Contents |
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
- Dataflow - forced recalculation of formulas when data values change (e.g. Spreadsheets)
- Visual programming language - manipulating program elements graphically rather than by specifying them textually (e.g. Simulink)
- Declarative programming - describes actions (e.g. HTML describe a page but not how to actually display it)
- Imperative programming - explicit statements that change a program state
- Functional programming - uses evaluation of mathematical functions and avoids state and mutable data
- Object-Oriented programming - uses classes and instances, inheritance, encapsulation and polymorphism
- Prototype-based programming - object-oriented programming that avoids classes and implements inheritance via the cloning of instances
- Parallel computing - simultaneous execution with the necessary communication and synchronization between processes/threads
- Actor model - concurrent computation with "actors" that makes local decisions in response to the environment (capable of selfish or competitive behavior)
- Pipeline programming - no nested function calls, but a simple flow structures with easy to visualize/understand data flow through the program
- Constraint programming - relations between variables are expressed as constraints (or constraint networks), directing allowable solutions (uses constraint satisfaction or simplex algorithm)
- Rule-based programming - a network of rules of thumb that comprise a knowledge base and can be used for expert systems and problem deduction & resolution
- Logic programming - uses logical facts to create a model that can prove consistency, deduce further truths or answer questions about the model (e.g. Dogs are animals! Dogs are red! Are some animals red?)
- Reflective programming - special case of metaprogramming (modification of programs as data by another program or ability to do part of the work in compile time instead of running time) in which the program modifies or extends itself
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
- object-oriented (class-based), visual
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)
- ECMAScript 45
- Luacitation needed
- Tcl with Snit extensioncitation needed
- 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 Lispcitation 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
- 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)
- ^ 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.
|
|||||
Wikipedia content modification information:
- This page was last modified on 19 November 2008, at 23:06.
Wikipedia Authorship and Review
Wikipedia content provided here is not reviewed directly by MedLibrary.org. Wikipedia content is authored by an open community of volunteers and is not produced by or in any way affiliated with MedLibrary.org.
Wikipedia Usage Guidelines
This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article on "Multi-paradigm programming language".
The URL for this specific entry is:
All Wikipedia text is available under the terms of the GNU Free Documentation License. (See Copyrights for details). Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc.
