A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
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.
- Concurrent programming – have language constructs for concurrency, these may involve multi-threading, support for distributed computing, message passing, shared resources (including shared memory), or futures
- Actor programming – concurrent computation with actors that make local decisions in response to the environment (capable of selfish or competitive behaviour)
- Constraint programming – relations between variables are expressed as constraints (or constraint networks), directing allowable solutions (uses constraint satisfaction or simplex algorithm)
- Dataflow programming – forced recalculation of formulas when data values change (e.g. spreadsheets)
- Declarative programming – describes what computation should perform, without specifying detailed state changes c.f. imperative programming (functional and logic programming are major subgroups of declarative programming)
- Distributed programming – have support for multiple autonomous computers that communicate via computer networks
- Functional programming – uses evaluation of mathematical functions and avoids state and mutable data
- Generic programming – uses algorithms written in terms of to-be-specified-later types that are then instantiated as needed for specific types provided as parameters
- Imperative programming – explicit statements that change a program state
- Logic programming – uses explicit mathematical logic for programming
- Metaprogramming – writing programs that write or manipulate other programs (or themselves) as their data, or that do part of the work at compile time that would otherwise be done at runtime
- Template metaprogramming – metaprogramming methods in which a compiler uses templates to generate temporary source code, which is merged by the compiler with the rest of the source code and then compiled
- Reflective programming – metaprogramming methods in which a program modifies or extends itself
- Object-oriented programming – uses data structures consisting of data fields and methods together with their interactions (objects) to design programs
- Class-based – object-oriented programming in which inheritance is achieved by defining classes of objects, versus the objects themselves
- Prototype-based – object-oriented programming that avoids classes and implements inheritance via cloning of instances
- Pipeline programming – a simple syntax change to add syntax to nest function calls to language originally designed with none
- 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 – manipulating program elements graphically rather than by specifying them textually (e.g. Simulink); also termed diagrammatic programming[1]
Language overview
Language | Paradigm count
|
Concurrent
|
Constraints
|
Dataflow
|
Declarative
|
Distributed
|
Functional
|
Metaprogramming
|
Generic
|
Imperative
|
Logic
|
Reflection
|
Object-oriented
|
Pipelines
|
Visual
|
Rule-based
|
Other |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ada |
5 | Yes |
— | — | — | Yes | — | — | Yes | Yes | — | — | Yes |
— | — | — | — |
ALF | 2 | — | — | — | — | — | Yes | — | — | — | Yes | — | — | — | — | — | — |
AmigaE [citation needed] |
2 | — | — | — | — | — | — | — | — | Yes | — | — | Yes |
— | — | — | — |
APL | 3 | — | — | — | — | — | Yes | — | — | Yes | — | — | — | — | — | — | Array (multi-dimensional) |
BETA [citation needed] |
3 | — | — | — | — | — | Yes | — | — | Yes | — | — | Yes |
— | — | — | — |
C++ | 7 (15) | Yes |
Library |
Library |
Library |
Library |
Yes | Yes |
Yes |
Yes | Library |
Library |
Yes |
Yes |
— | Library |
Array (multi-dimensional; using STL) |
C# | 6 (7) | Yes | — | Library |
— | — | Yes |
— | Yes | Yes | — | Yes | Yes |
— | — | — | Reactive |
ChucK [citation needed] |
3 | Yes | — | — | — | — | — | — | — | Yes | — | — | Yes |
— | — | — | — |
Claire | 2 | — | — | — | — | — | Yes | — | — | — | — | — | Yes |
— | — | — | — |
Clojure | 5 | Yes |
— | — | Yes | — | Yes |
Yes |
— | — | Library |
— | — | Yes |
Editor |
— | Multiple dispatch, |
Common Lisp | 7 (14) | Library |
Library |
Library |
Yes |
Library |
Yes | Yes | Yes |
Yes | Library |
Yes | Yes |
Library |
Library |
Library |
Multiple dispatch, meta-OOP system, |
Curl | 5 | — | — | — | — | — | Yes | — | Yes |
Yes | — | Yes | Yes |
— | — | — | — |
Curry | 4 | Yes | Yes | — | — | — | Yes | — | — | — | Yes | — | — | — | — | — | — |
D (version 2.0) |
7 | Yes |
— | — | — | — | Yes | Yes |
Yes |
Yes | — | Yes | Yes |
— | — | — | — |
Delphi | 3 | — | — | — | — | — | — | — | Yes |
Yes | — | — | Yes |
— | — | — | — |
Dylan [citation needed] |
3 | — | — | — | — | — | Yes | — | — | — | — | Yes | Yes |
— | — | — | — |
E | 3 | Yes | — | — | — | Yes | — | — | — | — | — | — | Yes |
— | — | — | — |
ECMAScript |
4 (5) | Partial |
— | — | Library |
— | Yes | — | — | Yes | — | Yes | Yes |
Library |
Editor |
— | Reactive, |
Erlang | 3 | Yes | — | — | Yes | Yes | Yes | — | — | — | — | — | — | Yes | — | — | — |
Elixir | 4 | Yes | — | — | — | Yes | Yes | Yes | — | — | — | — | — | Yes | — | — | — |
Elm | 6 | Yes | — | Yes | Yes | — | Yes (pure) |
— | Yes | — | — | — | — | Yes | — | — | Reactive |
F# | 7 (8) | Yes |
— | Library |
Yes | — | Yes | — | Yes | Yes | — | Yes | Yes |
— | — | — | Reactive |
Fortran | 4 (5) | Yes | — | — | — | — | Yes |
— | Yes |
— | — | — | Yes |
— | — | — | Array (multi-dimensional) |
Go | 4 | Yes | — | — | — | — | — | — | — | Yes | — | Yes | — | Yes | — | — | — |
Haskell | 8 (15) | Yes | Library |
Library |
Yes | Library |
Yes (lazy) (pure) |
Yes |
Yes | Yes | Library |
— | Partial |
Yes | Yes | Library |
Literate, reactive, dependent types (partial) |
Io | 4 | Yes |
— | — | — | — | Yes | — | — | Yes | — | — | Yes |
— | — | — | — |
J [citation needed] |
3 | — | — | — | — | — | Yes | — | — | Yes | — | — | Yes |
— | — | — | — |
Java | 6 | Yes | Library |
Library |
— | — | Yes | — | Yes | Yes | — | Yes | Yes |
— | — | — | — |
Julia | 9 (17) | Yes | Library |
Library |
Library |
Yes | Yes (eager) | Yes | Yes | Yes | Library |
Yes | Yes |
Yes | — | Library |
Multiple dispatch, Array (multi-dimensional); optionally lazy |
Kotlin | 8 | Yes | — | — | — | — | Yes | Yes | Yes | Yes | — | Yes | Yes | Yes | — | — | — |
LabVIEW | 4 | Yes | — | Yes | — | — | — | — | — | — | — | — | Yes | — | Yes | — | — |
Lava | 2 | — | — | — | — | — | — | — | — | — | — | — | Yes |
— | Yes | — | — |
LispWorks (version 6.0 with support for symmetric multi-processing, rules, logic (Prolog), CORBA) | 9 | Yes | — | — | — | Yes | Yes | Yes | — | Yes | Yes | Yes | Yes |
— | — | Yes | — |
Lua [citation needed] |
3 | — | — | — | — | — | Yes | — | — | Yes | — | — | Yes |
— | — | — | — |
MATLAB | 6 (10) | Zdroj:https://en.wikipedia.org?pojem=Multi-paradigm_programming_language