Comparison of multi-paradigm programming languages: Difference between revisions
Appearance
Content deleted Content added
Line 61: | Line 61: | ||
** [[Perl]] {{Citation needed|date=March 2007}} |
** [[Perl]] {{Citation needed|date=March 2007}} |
||
** [[Pliant]] {{Citation needed|date=March 2007}} |
** [[Pliant]] {{Citation needed|date=March 2007}} |
||
** [[Python (programming language)|Python]] <ref>[http://www-128.ibm.com/developerworks/library/l-prog.html Charming Python: Functional programming in Python, Part 1<!-- Bot generated title -->]</ref> |
|||
** [[Ruby (programming language)|Ruby]] |
** [[Ruby (programming language)|Ruby]] |
||
** [[Tcl]] with [[Incr Tcl|itcl]] or [[XOTcl]] extensions {{Citation needed|date=March 2007}} |
** [[Tcl]] with [[Incr Tcl|itcl]] or [[XOTcl]] extensions {{Citation needed|date=March 2007}} |
Revision as of 23:59, 5 May 2010
![]() | This article possibly contains original research. (August 2009) |
Programming languages can be grouped by the number and types of paradigms supported.
Paradigm summaries
A concise reference for the programming paradigms listed in this article.
- Actor model
- concurrent computation with "actors" that makes local decisions in response to the environment (capable of selfish or competitive behavior)
- Constraint programming
- relations between variables are expressed as constraints (or constraint networks), directing allowable solutions (uses constraint satisfaction or simplex algorithm)
- Dataflow
- forced recalculation of formulas when data values change (e.g. Spreadsheets)
- Declarative programming
- describes actions (e.g. HTML describes a page but not how to actually display it)
- Functional programming
- uses evaluation of mathematical functions and avoids state and mutable data
- Imperative programming
- explicit statements that change a program state
- 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?)
- Object-Oriented programming
- uses classes and instances, inheritance, encapsulation and polymorphism
- Parallel computing
- simultaneous execution with the necessary communication and synchronization between processes/threads
- Pipeline programming
- no nested function calls, but a simple flow structures with easy to visualize/understand data flow through the program
- Prototype-based programming
- object-oriented programming that avoids classes and implements inheritance via the cloning of instances
- Reflective programming
- special case of metaprogramming (modification of programs as data by another program or ability to do part of the work in runtime instead of compile time) in which the program modifies or extends itself
- 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
- Visual programming language
- manipulating program elements graphically rather than by specifying them textually (e.g. Simulink); also known as diagrammatic programming [1].
Two paradigm-languages
- visual, dataflow
- imperative, functional
- functional, logic
- object-oriented (class-based), functional
- functional, visual
- imperative, object-oriented (class-based)
- object-oriented (class-based), (prototype-based)
- Metaobject protocols
- object-oriented (class-based), visual
Three paradigm-languages
- imperative, object-oriented, visual
- functional, concurrent, dataflow
- functional, concurrent, distributed
- functional, concurrent, logic
- imperative, object-oriented (class-based), concurrent
- object-oriented (class-based), visual, dataflow
- imperative, functional, logic
- imperative, object-oriented (class-based), functional
- BETA [citation needed]
- F# [citation needed]
- J [citation needed]
- Perl [citation needed]
- Pliant [citation needed]
- Ruby
- Tcl with itcl or XOTcl extensions [citation needed]
- PHP[1][2][3]
- imperative, object-oriented (prototype-based), functional
- ECMAScript [4][5]
- Lua [citation needed]
- Tcl with Snit extension [citation needed]
- imperative, object-oriented (class-based), generic (template metaprogramming)
Four paradigm-languages
- imperative, object-oriented (class-based), reflective, generic
- imperative, object-oriented (class-based), reflective,functional
- imperative, object-oriented (class-based), functional, generic (template metaprogramming)
- Objective Caml
- D (version 2.0) [7][8]
- imperative, object-oriented (class-based), functional, logic
- imperative, object-oriented (class-based), logic, rule-based
- imperative, object-oriented (prototype-based), functional, concurrent (Actor model)
- imperative, object-oriented (prototype-based), functional, dialected
Five paradigm-languages
- imperative, object-oriented (class-based), concurrent (rendezvous and monitor-like based), generic, distributed
- imperative, object-oriented (class-based), functional, reflective, pipeline
- imperative, object-oriented (class-based), functional (only lambda support), reflective, generic
- imperative, object-oriented (class-based), functional, reflective, generic (template metaprogramming)
- imperative, object-oriented (class-based), functional, reflective, metaprogramming
- Common Lisp [citation needed] (although there are other paradigms implemented as libraries)
- Falcon programming language
- imperative, object-oriented (class-based), functional, generic, metaprogramming
- imperative, object-oriented (class-based), functional, generic, concurrent (Actor model)
Eight paradigm-languages
- imperative, object-oriented (class-based), functional (evaluation: eager, lazy), logic, concurrent, dataflow, distributed, constraint
Nine paradigm-languages
- imperative, object-oriented (class-based), functional, reflective, metaprogramming, distributed, logic, rule-based, concurrent
- LispWorks 6.0 with support for symmetric multi-processing, rules, logic (Prolog) and CORBA
See also
- Programming paradigm
- Categorical list of programming languages
- Domain-specific programming language
- Domain-specific multimodeling
References
- ^ PHP Manual, Chapter 17. Functions
- ^ PHP Manual, Chapter 19. Classes and Objects (PHP 5)
- ^ PHP Manual, Anonymous functions
- ^ 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.
- ^ Charming Python: Functional programming in Python, Part 1
- ^ D Language Feature Table
- ^ Phobos std.algorithm
- ^ 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
- ^ An Overview of the Scala Programming Language
- ^ Scala Language Specification
- ^ Peter Van Roy and Seif Haridi, Concepts, Techniques, and Models of Computer Programming
- Multiparadigm Design for C++, by Jim Coplien, 1998.