Content deleted Content added
tag with {{Bare URL PDF}} |
m Undid revision 1305042110 by Bender the Bot (talk) bot error fixed |
||
(43 intermediate revisions by 26 users not shown) | |||
Line 1:
{{
{{Original research|date=August 2009}}
[[Programming language]]s can be grouped by the number and types of [[Programming paradigm|paradigms]] supported.
==Paradigm summaries==
A concise reference for the programming paradigms listed in this article.
* [[Concurrent programming language|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 and promises|futures]]
** [[Actor model|Actor programming]] – concurrent computation with ''actors'' that make local decisions in response to the environment (capable of selfish or competitive
* [[Constraint programming]] – relations between variables are expressed as constraints (or constraint networks), directing allowable solutions (uses constraint satisfaction or [[simplex algorithm]])
* [[Dataflow|Dataflow programming]] – forced recalculation of formulas when data values change (e.g. [[spreadsheet]]s)
* [[Declarative programming]] – describes what
* [[Distributed computing|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
Line 18 ⟶ 16:
* [[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
** [[
* [[Object-oriented programming]] – uses data structures consisting of data fields and methods together with their interactions (objects) to design programs
** [[
** [[
* [[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 language|Visual programming]] – manipulating program elements graphically rather than by specifying them textually (e.g. [[Simulink]]); also termed ''diagrammatic programming''<ref>{{cite book
{{clear}}
==Language overview==
{|class="wikitable sortable" style="font-size:75%;"▼
{{sticky header}}
|+ List of multi-paradigm programming languages ▼
▲{|class="wikitable sortable sticky-header" style="font-size:75%;"
|- style="font-size: 133%;"
! Language
! {{vert header|stp=1|{{tooltip|Paradigm count|Paradigm count}}}}
! {{vert header|stp=1|{{tooltip|Concurrent|Concurrent}}}}
! {{vert header|stp=1|{{tooltip|Constraints|Constraints}}}}
! {{vert header|stp=1|{{tooltip|Dataflow|Dataflow}}}}
! {{vert header|stp=1|{{tooltip|Declarative|Declarative}}}}
! {{vert header|stp=1|{{tooltip|Distributed|Distributed}}}}
! {{vert header|stp=1|{{tooltip|Functional|Functional}}}}
! {{vert header|stp=1|{{tooltip|Metaprogramming|Metaprogramming}}}}
! {{vert header|stp=1|{{tooltip|Generic|Generic}}}}
! {{vert header|stp=1|{{tooltip|Imperative|Imperative}}}}
! {{vert header|stp=1|{{tooltip|Logic|Logic}}}}
! {{vert header|stp=1|{{tooltip|Reflection|Reflection}}}}
! {{vert header|stp=1|{{tooltip|Object
! {{vert header|stp=1|{{tooltip|Pipelines|Pipelines}}}}
! {{vert header|stp=1|{{tooltip|Visual|Visual}}}}
! {{vert header|stp=1|{{tooltip|Rule-based|Rule-based}}}}
! Other
|-
| style="font-size: 133%;" | [[Ada (programming language)|Ada]]{{wbr}}<ref>[http://www.adaic.org/standards/05rm/html/RM-TTL.html Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3], [http://www.adaic.org/standards/05rm/html/RM-9.html Section 9: Tasks and Synchronization]</ref>{{wbr}}<ref>[http://www.adaic.org/standards/05rm/html/RM-TTL.html Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3] [http://www.adaic.org/standards/05rm/html/RM-E.html Annex E: Distributed Systems]</ref>{{wbr}}<ref>[http://www.adaic.org/standards/05rm/html/RM-TTL.html Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3], [http://www.adaic.org/standards/05rm/html/RM-12.html Section 12: Generic Units]</ref>{{wbr}}<ref>[http://www.adaic.org/standards/05rm/html/RM-TTL.html Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3], [http://www.adaic.org/standards/05rm/html/RM-6.html Section 6: Subprograms]</ref>{{wbr}}<ref>[http://www.adaic.org/standards/05rm/html/RM-TTL.html Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3], [http://www.adaic.org/standards/05rm/html/RM-3-9.html 3.9 Tagged Types and Type Extensions]</ref> || 5
| {{yes}}{{wbr}}<ref group="a" name="rend-mon">rendezvous and monitor-like based</ref> || {{
|-
| style="font-size: 133%;" | [[Algebraic Logic Functional programming language|ALF]] || 2
| {{
|-
| style="font-size: 133%;" | [[AmigaE]]<br/>{{Citation needed |date=March 2007}} || 2
| {{
|-
| style="font-size: 133%;" | [[APL (programming language)|APL]] || 3
| {{
|-
| style="font-size: 133%;" | [[BETA (programming language)|BETA]]
| {{
|-
| style="font-size: 133%;" | [[C++]] || 7 (15)
| {{yes}}{{wbr}}<ref>[http://en.cppreference.com/w/cpp/thread Thread support]</ref>{{wbr}}<ref>[http://en.cppreference.com/w/cpp/atomic Atomics support]</ref>{{wbr}}<ref>[https://cppandbeyond.wordpress.com/2011/04/11/session-announcement-the-c0x-memory-model-and-why-you-care Memory model]</ref> || {{partial|Library}}{{wbr}}<ref>[http://www.gecode.org/ Gecode]</ref> || {{partial|Library}}{{wbr}}<ref>[http://www.accellera.org/downloads/standards/systemc/about_systemc/ SystemC]</ref>{{wbr}}<ref>[http://www.boost.org/libs/iostreams/ Boost.Iostreams]</ref> || {{partial|Library}}{{wbr}}<ref>[http://code.google.com/p/boolinq/ Boolinq]</ref>{{wbr}}<ref>
|-
| style="font-size: 133%;" | [[C Sharp (programming language)|C#]] || 6 (7)
| {{yes}} || {{
|-
| style="font-size: 133%;" | [[ChucK]]
| {{yes}} || {{
|-
| style="font-size: 133%;" | [[Claire (programming language)|Claire]] || 2
| {{
|-
| style="font-size: 133%;" | [[Clojure]] || 5
| {{yes}}{{wbr}}<ref>[https://clojure.org/about/concurrent_programming Clojure - Concurrent Programming]</ref>{{wbr}}<ref>[https://github.com/clojure/core.async Clojure - core.async]</ref> || {{
|-
| style="font-size: 133%;" | [[Common Lisp]] || 7 (14)
| {{partial|Library}}{{wbr}}<ref>
|-
| style="font-size: 133%;" | [[Curl (programming language)|Curl]] || 5
| {{
|-
| style="font-size: 133%;" | [[Curry (programming language)|Curry]] || 4
| {{yes}} || {{yes}} || {{
|-
| style="font-size: 133%;" | [[D (programming language)|D]] (version 2.0){{wbr}}<ref>[http://www.digitalmars.com/d/2.0/comparison.html D Language Feature Table]</ref>{{wbr}}<ref>[http://www.digitalmars.com/d/2.0/phobos/std_algorithm.html Phobos std.algorithm]</ref> ||
| {{yes}}{{wbr}}<ref group="a" name="actor"
|-
| style="font-size: 133%;" | [[Delphi (
| {{
|-
| style="font-size: 133%;" | [[Dylan (programming language)|Dylan]]<br/>{{Citation needed |date=March 2007}} || 3
| {{
|-
| style="font-size: 133%;" | [[E (programming language)|E]] || 3
| {{yes}} || {{
|-
| style="font-size: 133%;" | [[ECMAScript]]{{wbr}}<ref>[http://www.crockford.com/javascript/little.html The Little JavaScripter] demonstrates fundamental commonality with Scheme, a functional language.</ref>{{wbr}}<ref>[http://mckoss.com/jscript/object.htm Object
| {{partial
|-
| style="font-size: 133%;" | [[Erlang (programming language)|Erlang]] || 3
| {{yes}} || {{
|-
| style="font-size: 133%;" | [[Elixir (programming language)|Elixir]] || 4
| {{yes}} || {{
|-
| style="font-size: 133%;" | [[Elm (programming language)|Elm]] || 6
| {{yes}} || {{
|-
| style="font-size: 133%;" | [[F Sharp (programming language)|F#]] || 7 (8)
| {{yes}}{{wbr}}<ref group="a" name="actor">actor programming</ref> || {{
|-
| style="font-size: 133%;" | [[Fortran]] || 4 (5)
| {{yes}} || {{
|-
| style="font-size: 133%;" |[[Go (programming language)|Go]] || 4
| {{yes}} || {{
|-
|
| {{yes}} || {{partial|Library}}{{wbr}}<ref>
|- |
| style="font-size: 133%;" | [[Io (programming language)|Io]] || 4
| {{yes}}{{wbr}}<ref group="a" name="actor"
|-
| style="font-size: 133%;" | [[J (programming language)|J]]
| {{
|-
| style="font-size: 133%;" | [[Java (programming language)|Java]] || 6
| {{yes}} || {{partial|Library}}{{wbr}}<ref>https://jcp.org/en/jsr/detail?id=331 JSR 331: Constraint Programming API</ref> || {{partial|Library}}{{wbr}}<ref>https://github.com/GoogleCloudPlatform/DataflowJavaSDK Google Cloud Platform Dataflow SDK</ref> || {{
|-
| style="font-size: 133%;" | [[Julia (programming language)|Julia]] || 9 (17)
| {{yes}} || {{partial|Library}}{{wbr}}<ref>{{cite web |title=JuliaOpt/JuMP.jl |url=https://github.com/JuliaOpt/JuMP.jl |website=GitHub |publisher=JuliaOpt |
|-
| style="font-size: 133%;" |[[Kotlin (programming language)|Kotlin]] || 8
| {{yes}} || {{
|- |
| style="font-size: 133%;" | [[LabVIEW]] || 4
| {{yes}} || {{
|-
|
| {{
|-
| style="font-size: 133%;" | [[LispWorks]] (version 6.0 with support for symmetric multi-processing, rules, logic ([[Prolog]]), [[Common Object Request Broker Architecture|CORBA]]) || 9
| {{yes}} || {{
|-
| style="font-size: 133%;" | [[Lua (programming language)|Lua]]
| {{
|-
| style="font-size: 133%;" | [[MATLAB]] || 6 (10)
| {{partial|Toolbox}}{{wbr}}<ref>{{cite web |title=Execute loop iterations in parallel |url=http://mathworks.com/help/distcomp/parfor.html |website=mathworks.com |
|-
| style="font-size: 133%;" | [[Nemerle]] || 7
| {{yes}} || {{
|-
| style="font-size: 133%;" | [[Object Pascal]] || 4
| {{yes}} || {{
|-
| style="font-size: 133%;" | [[OCaml]] || 4
| {{
|-
| style="font-size: 133%;" | [[Oz (programming language)|Oz]] || 11
| {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{
|-
| style="font-size: 133%;" | [[Perl]]
| {{yes}}{{wbr}}<ref>[http://perldoc.perl.org/threads.html interpreter based threads]</ref> || {{
|-
| style="font-size: 133%;" | [[PHP]]{{wbr}}<ref>[http://php.net/manual/en/index.php PHP Manual], [http://php.net/manual/en/language.functions.php Chapter 17. Functions]</ref>{{wbr}}<ref>[http://php.net/manual/en/index.php PHP Manual], [http://php.net/manual/en/language.oop5.php Chapter 19. Classes and Objects (PHP 5)]</ref>{{wbr}}<ref>[http://php.net/manual/en/index.php PHP Manual], [http://docs.php.net/functions.anonymous Anonymous functions]</ref> || 4
| {{
|-
| style="font-size: 133%;" | [[Poplog]] || 3
| {{
|-
| style="font-size: 133%;" | [[Prograph]] || 3
| {{
|-
| style="font-size: 133%;" | [[Python (programming language)|Python]] || 5 (10)
| {{partial|Library}}{{wbr}}<ref>{{cite web |title=Parallel Processing and Multiprocessing in Python |url=https://wiki.python.org/moin/ParallelProcessing |website=
| {{partial|Library}}{{wbr}}<ref>{{cite web |title=python-constraint |url=https://pypi.python.org/pypi/python-constraint |website=pypi.python.org |
| {{
| {{
| {{partial|Library}}{{wbr}}<ref>{{cite web |title=DistributedProgramming |url=https://wiki.python.org/moin/DistributedProgramming |website=
| {{
| {{yes}}{{wbr}}<ref>{{cite web |title=Chapter 9. Metaprogramming |url=http://chimera.labs.oreilly.com/books/1230000000393/ch09.html |website=chimera.labs.oreilly.com |
| {{yes}}{{wbr}}<ref>{{cite web |title=PEP 443
| {{
|-
| style="font-size: 133%;" | [[R (programming language)|R]] || 4 (6)
| {{partial|Library}}{{wbr}}<ref>{{cite web |title=Futureverse |url=https://www.futureverse.org/}}</ref> || {{
|-
| style="font-size: 133%;" | [[Racket (programming language)|Racket]] || 10
| {{yes}}{{wbr}}<ref>[https://docs.racket-lang.org/guide/concurrency.html Racket Guide: Concurrency and Synchronization]</ref> || {{yes}}{{wbr}}<ref>[https://docs.racket-lang.org/rosette-guide/
|-
| style="font-size: 133%;" | [[Raku (programming language)|Raku]] ||
| {{yes}}{{wbr}}<ref>[https://docs.perl6.org/language/concurrency Channels and other mechanisms]</ref> || {{
|-
| style="font-size: 133%;" | [[ROOP (programming language)|ROOP]] || 3
| {{
|-
| style="font-size: 133%;" | [[Ruby (programming language)|Ruby]] || 5
| {{
|-
| style="font-size: 133%;" | [[Rust (programming language)|Rust]] (version 1.0.0-alpha) || 6
| {{yes}}{{wbr}}<ref group="a" name="actor"
|-
| style="font-size: 133%;" | [[Sather]]<br/>{{Citation needed |date=March 2007}} || 2
| {{
|-
| style="font-size: 133%;" | [[Scala (programming language)|Scala]]{{wbr}}<ref>[http://www.scala-lang.org/sites/default/files/linuxsoft_archives/docu/files/ScalaOverview.pdf An Overview of the Scala Programming Language]</ref>{{wbr}}<ref>[https://wayback.archive-it.org/all/20171003043151/http://www.scala-lang.org/sites/default/files/linuxsoft_archives/docu/files/ScalaReference.pdf Scala Language Specification]</ref> || 9
| {{yes}}{{wbr}}<ref group="a" name="actor">actor programming</ref> || {{
|-
| style="font-size: 133%;" | [[Simula]]<br/>{{Citation needed |date=March 2007}} || 2
| {{
|-
| style="font-size: 133%;" | [[SISAL]] || 3
| {{yes}} || {{
|-
| style="font-size: 133%;" | [[Spreadsheet]]s || 2
| {{
|-
| style="font-size: 133%;" | [[Swift (programming language)|Swift]] || 7
| {{yes}} || {{
|-
| style="font-size: 133%;" | [[Tcl]] with Snit extension
| {{
|-
| style="font-size: 133%;" | [[Visual Basic .NET]] || 6 (7)
| {{yes}} || {{
|-
| style="font-size: 133%;" | [[Windows PowerShell]] || 6
| {{
|-
| style="font-size: 133%;" | [[Wolfram Language]] & [[Mathematica]] || 13{{wbr}}<ref>[http://www.wolfram.com/language/for-experts/ Notes for Programming Language Experts], Wolfram Language Documentation.</ref> (14)
| {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}} || {{yes}}{{wbr}}<ref>[https://reference.wolfram.com/language/tutorial/ExternalPrograms.html External Programs], Wolfram Language Documentation.</ref> || {{
|}
<!-- Row Template:
|-
| lang || count || concurrent || constrain || dataf || decl || dist || func || meta || generic || imp || logic || reflect || OO || pipeline || visual || rules || other
{{yes}} {{
-->
==See also==
* [[Programming paradigm]]
* [[
* [[Domain-specific
* [[Domain-specific multimodeling]]
==Notes==
{{
==Citations==
Line 261 ⟶ 260:
* Jim Coplien, ''Multiparadigm Design for C++'', Addison-Wesley Professional, 1998.
{{Programming
{{Types of programming languages}}
{{DEFAULTSORT:List of multi-paradigm programming languages}}
|