释义 |
- Paradigm summaries
- Language overview
- See also
- Notes
- Citations
- References
{{short description|Wikimedia list article}}{{Original research|date=August 2009}}{{Programming paradigms|state=collapsed}}Programming languages can be grouped by the number and types of paradigms supported. Paradigm summariesA 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 behavior)
- 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 a computation should perform, without specifying detailed state changes c.f. imperative programming (functional and logic programming are major subgroups of declarative programing)
- 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 templates are used by a compiler 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 List of multi-paradigm programming languages Language | Number of Paradigms | Concurrent | Constraints | Dataflow | Declarative | Distributed | Functional | Metaprogramming | Generic | Imperative | Logic | Reflection | Object-oriented | Pipelines | Visual | Rule-based | Other paradigms | Ada[2][3][4][5][6] | 5 | {{yes}}[7] | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{no}} | {{yes}}[8] | {{no}} | {{no}} | {{no}} | {{no}} | ALF | 2 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | date=March 2007}} | 2 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}}[8] | {{no}} | {{no}} | {{no}} | {{no}} | APL | 3 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | Array (multi-dimensional) | date=March 2007}} | 3 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}}[8] | {{no}} | {{no}} | {{no}} | {{no}} | C++ | 7 (15) | {{yes}}[8][9][10] | Library}}[11] | Library}}[12][13] | Library}}[14][15] | Library}}[16][17] | {{yes}} | {{yes}}[18] | {{yes}}[19] | {{yes}} | Library}}[20][21] | Library}}[22] | {{yes}}[8] | {{yes}}[23] | {{no}} | Library}}[24] | Array (multi-dimensional; using STL) | C# | 6 (7) | {{yes}} | {{no}} | Library}}[25] | {{no}} | {{no}} | {{yes}}[26] | {{no}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{yes}}[8] | {{no}} | {{no}} | {{no}} | reactive[27] | date=March 2007}} | 3 | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}}[8] | {{no}} | {{no}} | {{no}} | {{no}} | Claire | 2 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}}[8] | {{no}} | {{no}} | {{no}} | {{no}} | Clojure | 5 | {{yes}}[28][29] | {{no}} | {{no}} | {{yes}} | {{no}} | {{yes}}[30] | {{yes}}[31] | {{no}} | {{no}} | Library}}[32] | {{no}} | {{no}} | {{yes}}[33] | {{no}} | {{no}} | Multiple dispatch[34], Agents[35] | Common Lisp | 5 | Library}}[36] | Library}}[37] | Library}}[38] | {{yes}}[39] | Library}}[40] | {{yes}} | {{yes}} | {{yes}}[41] | {{yes}} | Library}}[42] | {{yes}} | {{yes}} (multiple dispatch, method combinations)[43][8] | Library}}[44] | {{no}} | Library}}[45] | Multiple dispatch, meta-OOP system[46], Language is extensible via metaprogramming. | Curl | 5 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{yes}}[19] | {{yes}} | {{no}} | {{yes}} | {{yes}}[8] | {{no}} | {{no}} | {{no}} | {{no}} | Curry | 4 | {{yes}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | D (version 2.0)[47][48] | 6 | {{yes}}[59] | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{yes}}[49][19] | {{yes}}[19] | {{yes}} | {{no}} | {{no}} | {{yes}}[8] | {{no}} | {{no}} | {{no}} | {{no}} | date=March 2007}} | 3 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | {{no}} | E | 3 | {{yes}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | {{no}} | ECMAScript[51][52] (ActionScript, E4X, JavaScript, JScript) | 4 (5) | partial (promises, native extensions)}}[53] | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{yes}}[54] | {{no}} | {{no}} | {{no}} | reactive[55] | Embarcadero Delphi | 3 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}}[19] | {{yes}} | {{no}} | {{no}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | {{no}} | Erlang | 3 | {{yes}} | {{no}} | {{no}} | {{yes}} | {{yes}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | Elixir | 4 | {{yes}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{yes}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | Elm | 6 | {{yes}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | reactive | F# | 7 (8) | {{yes}}[56] | {{no}} | Library}}[57] | {{yes}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | reactive[58] | Fortran | 4 (5) | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}}[59] | {{no}} | {{yes}}[60] | {{no}} | {{no}} | {{no}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | Array (multi-dimensional) | Go | 4 | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | Haskell | 8 (15) | {{yes}} | Library}}[61] | Library}}[62] | {{yes}} | Library}}[63] | {{yes}} (lazy) | {{yes}}[64] | {{yes}} | {{yes}} | Library}}[65] | {{no}} | Immutable}} | {{yes}} | {{yes}} | Library}}[66] | literate, reactive, dependent types (partial)}} | Io | 4 | {{yes}}[56] | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}}[54] | {{no}} | {{no}} | {{no}} | {{no}} | date=March 2007}} | 3 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | {{no}} | Java | 6 | {{yes}} | Library}}[67] | Library}}[68] | {{no}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | {{no}} | Julia | 9 (17) | {{yes}} | Library}}[69] | Library}}[70][71] | Library}}[72] | {{yes}} | {{yes}} (eager) | {{yes}} | {{yes}} | {{yes}} | Library}}[73] | {{yes}} | {{yes}} (multiple dispatch, not traditional single) | {{yes}} | {{no}} | Library}}[74][75] | Multiple dispatch, Array (multi-dimensional); optionally lazy[76] and reactive (with libraries) | Kotlin | 8 | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{yes}} | {{yes}} | {{no}} | {{no}} | {{no}} | LabVIEW | 4 | {{yes}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{no}} | {{no}} | Lava | 2 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}}[50] | {{no}} | {{yes}} | {{no}} | {{no}} | LispWorks (version 6.0 with support for symmetric multi-processing, rules, logic (Prolog), CORBA) | 9 | {{yes}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{yes}} | {{yes}} | {{yes}}[50] | {{no}} | {{no}} | {{yes}} | {{no}} | date=March 2007}} | 3 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}}[54] | {{no}} | {{no}} | {{no}} | {{no}} | MATLAB | 6 (10) | Toolbox}}[77] | Toolbox}}[78] | {{yes}}[79] | {{no}} | Toolbox}}[80] | {{no}} | {{yes}}[81] | {{yes}}[82] | {{no}} | {{no}} | {{yes}}[83] | {{yes}}[84] | {{no}} | {{yes}}[85] | {{no}} | Array (multi-dimensional) | Nemerle | 7 | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | {{no}} | Object Pascal | 4 | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | {{no}} | OCaml | 4 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{no}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | {{no}} | Oz | 11 | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{no}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{yes}}[50] | {{yes}} | {{no}} | {{yes}} | {{no}} | date=March 2007}} | 8 (9) | {{yes}}[86] | Library}}[87] | {{yes}}[88] | {{no}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{no}} | {{yes}}[50] | {{yes}}[50] | {{yes}} | {{no}} | {{no}} | {{no}} | Perl6 | 10 | {{yes}}[89] | {{yes}}[90] | {{yes}}[91] | {{no}} | Library}}[92] | {{yes}} | {{yes}}[93] | {{yes}}[94] | {{yes}} | {{no}} | {{yes}}[95] | {{yes}}[96] | {{yes}} | {{no}} | {{no}} | Multiple dispatch, lazy lists, reactive. | PHP[97][98][99] | 4 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | {{no}} | Poplog | 3 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | Prograph | 3 | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}}[50] | {{no}} | {{yes}} | {{no}} | {{no}} | Python | 5 (10) | Library}}[100][101] | Library}}[102] | {{no}} | {{no}} | Library}}[103] | {{partial}} | {{yes}}[104][105] | {{yes}}[106][107] | {{yes}} | Library}}[108] | {{yes}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | structured | R | 4 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{yes}} | {{yes}}[109] | {{no}} | {{no}} | Array (multi-dimensional) | Racket | 6 | {{yes}}[110] | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | ROOP | 3 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | Ruby | 5 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | {{no}} | Rust (version 1.0.0-alpha) | 6 | {{yes}}[56] | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{yes}}[111][112] | {{yes}}[113] | {{yes}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | linear, affline, and ownership types | date=March 2007}} | 2 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | {{no}} | Scala[114][115] | 9 | {{yes}}[116] | {{no}} | {{yes}}[117] | {{yes}} | {{no}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | {{no}} | date=March 2007}} | 2 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | {{no}} | SISAL | 3 | {{yes}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | Spreadsheets | 2 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | Swift | 7 | {{yes}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | block-structured | date=March 2007}} | 3 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}}[118] | {{no}} | {{no}} | {{yes}} | {{no}} | {{no}} | {{yes}}[54][119] | {{no}} | {{no}} | {{no}} | {{no}} | Visual Basic .NET | 6 (7) | {{yes}} | {{no}} | Library}}[25] | {{no}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{yes}}[50] | {{no}} | {{no}} | {{no}} | reactive[27] | Windows PowerShell | 6 | {{no}} | {{no}} | {{no}} | {{no}} | {{no}} | {{yes}} | {{no}} | {{yes}} | {{yes}} | {{no}} | {{yes}} | {{yes}}[50] | {{yes}} | {{no}} | {{no}} | {{no}} | Wolfram Language & Mathematica | 13[120] (14) | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}} | {{yes}}[121] | {{no}} | {{yes}} | Knowledge Based | See also- Programming paradigm
- Categorical list of programming languages
- Domain-specific programming language
- Domain-specific multimodeling
Notes1. ^{{cite book |chapter-url=http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=381508 |chapter=Diagrammatic-graphical programming languages and DoD-STD-2167A |last=Bragg |first=S.D. |last2=Driskill |first2=C.G. |date=20–22 September 1994 |work=IEEEXplore |publisher=IEEE|doi=10.1109/AUTEST.1994.381508 |title=Proceedings of AUTOTESTCON '94 |pages=211–220 |isbn=978-0-7803-1910-3 }} 2. ^Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 9: Tasks and Synchronization 3. ^Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3 Annex E: Distributed Systems 4. ^Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 12: Generic Units 5. ^Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 6: Subprograms 6. ^Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, 3.9 Tagged Types and Type Extensions 7. ^rendezvous and monitor-like based 8. ^Thread support 9. ^Atomics support 10. ^[https://cppandbeyond.wordpress.com/2011/04/11/session-announcement-the-c0x-memory-model-and-why-you-care Memory model] 11. ^Gecode 12. ^SystemC 13. ^Boost.Iostreams 14. ^Boolinq 15. ^AraRat 16. ^OpenMPI 17. ^Boost.MPI 18. ^Boost.MPL 19. ^1 2 3 4 Template metaprogramming 20. ^LC++ 21. ^Castor {{webarchive|url=https://web.archive.org/web/20130125024854/http://www.mpprogramming.com/Cpp/Default.aspx |date=2013-01-25 }} 22. ^[https://bytemaster.github.com/boost_reflect/index.html Reflect Library] 23. ^N3534 24. ^Boost.Spirit 25. ^1 using TPL Dataflow 26. ^only lambda support (lazy functional programming) 27. ^1 using Reactive Extensions (Rx) 28. ^[https://clojure.org/about/concurrent_programming Clojure - Concurrent Programming] 29. ^[https://github.com/clojure/core.async Clojure - core.async] 30. ^[https://clojure.org/about/functional_programming Clojure - Functional Programming] 31. ^[https://clojure.org/reference/macros Clojure - Macros] 32. ^[https://github.com/clojure/core.logic/ Clojure - core.logic] 33. ^[https://clojure.org/guides/threading_macros Clojure - Threading Macros Guide] 34. ^[https://clojure.org/reference/multimethods Multimethods and Hierarchies] 35. ^[https://clojure.org/reference/agents Agents and Asynchronous Actions] 36. ^[https://www.cliki.net/Concurrency] many concurrency paradigms implemented as language extensions 37. ^[https://www.cliki.net/screamer] constraint programming inside CL through extensions 38. ^[https://www.cliki.net/Cells] dataflow extension 39. ^ by creating DSLs using the built-in metaprogramming; also see note on functional, constraint and logic paradigms, which are part of declarative 40. ^[https://www.cliki.net/Distributed] MPI, etc via language extensions 41. ^template metaprogramming using macros (see C++) 42. ^[https://www.cliki.net/Prolog] [https://franz.com/products/prolog/] Prolog implemented as a language extension 43. ^Common Lisp Object System see Wikipedia article on CLOS, the Common Lisp Object System. 44. ^implemented by the user via a short macro, example of implementation: 45. ^ rule-based programming extension 46. ^[https://common-lisp.net/project/ecl/static/manual/ch31.html] through the Meta Object Protocol 47. ^D Language Feature Table 48. ^Phobos std.algorithm 49. ^D language String Mixins 50. ^1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 Class-based 51. ^The Little JavaScripter demonstrates fundamental commonality with Scheme, a functional language. 52. ^Object Oriented Programming in JavaScript gives an overview of object-oriented programming techniques in JavaScript. 53. ^using Node.js' [https://nodejs.org/api/cluster.html cluster] module or [https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options child_process.fork] method, [https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers web workers] in the browser, etc. 54. ^1 2 3 Prototype-based 55. ^using Reactive Extensions (RxJS) 56. ^1 2 3 actor programming 57. ^using TPL Dataflow 58. ^using Reactive Extensions (Rx) 59. ^purely functional 60. ^parameterized classes 61. ^[https://hackage.haskell.org/package/hswip Prolog embedding] 62. ^{{Cite web | url=https://wiki.haskell.org/Functional_Reactive_Programming | title=Functional Reactive Programming - HaskellWiki}} 63. ^[https://haskell-distributed.github.io/ Cloud Haskell] 64. ^{{Cite web | url=https://wiki.haskell.org/Template_Haskell | title=Template Haskell - HaskellWiki}} 65. ^{{Cite web | url=https://hackage.haskell.org/package/logict | title=Logict: A backtracking logic-programming monad}} 66. ^[https://web.engr.oregonstate.edu/~erwig/HaskellRules/HaskellRules_June06.pdf] 67. ^https://jcp.org/en/jsr/detail?id=331 JSR 331: Constraint Programming API 68. ^ https://github.com/GoogleCloudPlatform/DataflowJavaSDK Google Cloud Platform Dataflow SDK 69. ^https://jump.readthedocs.io/en/latest/ 70. ^{{Cite web | url=https://github.com/MikeInnes/DataFlow.jl | title=Contribute to MikeInnes/DataFlow.jl development by creating an account on GitHub| date=2019-01-15}} 71. ^{{Cite web | url=https://github.com/JuliaGizmos/Reactive.jl | title=Reactive programming primitives for Julia. Contribute to JuliaGizmos/Reactive.jl development by creating an account on GitHub| date=2018-12-28}} 72. ^https://github.com/davidanthoff/Query.jl Query almost anything in julia 73. ^https://github.com/lilinjn/LilKanren.jl A collection of Kanren implementations in Julia 74. ^{{Cite web | url=https://github.com/abeschneider/PEGParser.jl | title=PEG Parser for Julia. Contribute to abeschneider/PEGParser.jl development by creating an account on GitHub| date=2018-12-03}} 75. ^{{Cite web | url=https://github.com/gitfoxi/Parsimonious.jl | title=A PEG parser generator for Julia. Contribute to gitfoxi/Parsimonious.jl development by creating an account on GitHub| date=2017-08-03}} 76. ^Lazy https://github.com/MikeInnes/Lazy.jl 77. ^{{cite web|title=Execute loop iterations in parallel|url=http://mathworks.com/help/distcomp/parfor.html|website=mathworks.com|accessdate=21 October 2016}} 78. ^{{cite web|title=Write Constraints|url=https://mathworks.com/help/optim/write-constraints.html|website=mathworks.com|accessdate=21 October 2016}} 79. ^{{cite web|title=Getting Started with SimEvents|url=https://mathworks.com/help/simevents/getting-started-with-simevents.html|website=mathworks.com|accessdate=21 October 2016}} 80. ^{{cite web|title=Execute loop iterations in parallel|url=http://mathworks.com/help/distcomp/parfor.html|website=mathworks.com|accessdate=21 October 2016}} 81. ^{{cite web|title=Execute MATLAB expression in text - MATLAB eval|url=https://mathworks.com/help/matlab/ref/eval.html|website=mathworks.com|accessdate=21 October 2016}} 82. ^{{cite web|title=Determine class of object|url=https://mathworks.com/help/matlab/ref/class.html|website=mathworks.com|accessdate=21 October 2016}} 83. ^{{cite web|title=Class Metadata|url=https://mathworks.com/help/matlab/get-information-about-classes-and-objects.html|website=mathworks.com|accessdate=21 October 2016}} 84. ^{{cite web|title=Object-Oriented Programming|url=https://mathworks.com/help/matlab/object-oriented-programming.html|website=mathworks.com|accessdate=21 October 2016}} 85. ^{{cite web|title=Simulink|url=https://mathworks.com/help/simulink/index.html|website=mathworks.com|accessdate=21 October 2016}} 86. ^interpreter based threads 87. ^Moose 88. ^Higher Order Perl 89. ^[https://docs.perl6.org/language/concurrency Channels and other mechanisms] 90. ^{{Cite web | url=https://docs.perl6.org/type/Signature#Type_Constraints | title=Class Signature}} 91. ^[https://docs.perl6.org/routine/==%3E Feed operator] 92. ^https://github.com/perl6/doc/issues/1744#issuecomment-360565196 Cro module 93. ^{{Cite web | url=https://perl6advent.wordpress.com/2011/12/14/meta-programming-what-why-and-how/ | title=Meta-programming: What, why and how| date=2011-12-14}} 94. ^https://perl6advent.wordpress.com/2009/12/18/day-18-roles/ Parametrized Roles 95. ^{{Cite web | url=https://docs.perl6.org/language/mop | title=Meta-object protocol (MOP)}} 96. ^https://docs.perl6.org/language/classtut Classes and Roles 97. ^PHP Manual, Chapter 17. Functions 98. ^PHP Manual, Chapter 19. Classes and Objects (PHP 5) 99. ^PHP Manual, Anonymous functions 100. ^{{cite web|title=Parallel Processing and Multiprocessing in Python|url=https://wiki.python.org/moin/ParallelProcessing|website=wiki.python.org|accessdate=21 October 2016}} 101. ^{{cite web|title=threading — Higher-level threading interface|url=https://docs.python.org/2/library/threading.html|website=docs.python.org|accessdate=21 October 2016}} 102. ^{{cite web|title=python-constraint|url=https://pypi.python.org/pypi/python-constraint|website=pypi.python.org|accessdate=21 October 2016}} 103. ^{{cite web|title=DistributedProgramming|url=https://wiki.python.org/moin/DistributedProgramming|website=wiki.python.org|accessdate=21 October 2016}} 104. ^{{cite web|title=Chapter 9. Metaprogramming|url=http://chimera.labs.oreilly.com/books/1230000000393/ch09.html|website=chimera.labs.oreilly.com|accessdate=22 October 2016}} 105. ^{{cite web|title=Metaprogramming|url=https://python-3-patterns-idioms-test.readthedocs.io/en/latest/Metaprogramming.html|website=readthedocs.io|accessdate=22 October 2016}} 106. ^{{cite web|title=PEP 443 -- Single-dispatch generic functions|url=https://www.python.org/dev/peps/pep-0443/|website=python.org|accessdate=22 October 2016}} 107. ^{{cite web|title=PEP 484 -- Type Hints|url=https://www.python.org/dev/peps/pep-0484/#generics|website=python.org|accessdate=22 October 2016}} 108. ^{{cite web |url=https://sites.google.com/site/pydatalog/ |title=PyDatalog |accessdate=22 October 2016}} 109. ^{{cite web|title= Magrittr: A Forward Pipe Operator for R|url=https://cran.r-project.org/package=magrittr|website=cran.r-project.org\\accessdate=13 July 2017}} 110. ^[https://docs.racket-lang.org/guide/concurrency.html Racket Guide: Concurrency and Synchronization] 111. ^{{cite web|title=The Rust macros guide|url=http://doc.rust-lang.org/1.0.0-alpha/book/macros.html|website=Rust|accessdate=19 January 2015|ref=rust-macros}} 112. ^{{cite web|title=The Rust compiler plugins guide|url=http://doc.rust-lang.org/1.0.0-alpha/book/plugins.html|website=Rust|accessdate=19 January 2015|ref=rust-plugins}} 113. ^The Rust Reference §6.1.3.1 114. ^An Overview of the Scala Programming Language 115. ^Scala Language Specification 116. ^actor programming 117. ^Akka {{webarchive|url=https://web.archive.org/web/20130119045517/http://doc.akka.io/docs/akka/snapshot/scala/dataflow.html |date=2013-01-19 }} 118. ^{{cite web|title=Tcl Programming/Introduction|url=https://en.wikibooks.org/wiki/Tcl_Programming/Introduction#One_language.2C_many_styles|website=en.wikibooks.org|accessdate=22 October 2016}} 119. ^{{cite web|title=TCLLIB - Tcl Standard Library: snitfaq|url=http://tmml.sourceforge.net/doc/tcllib/snitfaq.html|website=sourceforge.net|accessdate=22 October 2016}} 120. ^Notes for Programming Language Experts, Wolfram Language Documentation. 121. ^[https://reference.wolfram.com/language/tutorial/ExternalPrograms.html External Programs], Wolfram Language Documentation.
Citations{{Reflist|30em}}References- Jim Coplien, Multiparadigm Design for C++, Addison-Wesley Professional, 1998.
{{Programming language}}{{DEFAULTSORT:List of multi-paradigm programming languages}} 2 : Programming paradigms|Programming language comparisons |