Comparison of multi-paradigm programming languages

Short description: none

This article possibly contains original research. Please improve it by verifying the claims made and adding inline citations. Statements consisting only of original research should be removed. (August 2009) (Learn how and when to remove this template message)

|

Programming languages can be grouped by the number and types of paradigms supported.

## Contents

* 1 Paradigm summaries
* 2 Language overview
* 3 See also
* 4 Notes
* 5 Citations
* 6 References

## 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 cf. 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

List of multi-paradigm programming languages  Language  | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Script error: No such module "Vertical header". | Other

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Ada​[2]​[3]​[4]​[5]​[6] | 5  | Yes​[a 1] | N/A | N/A | N/A | Yes | N/A | N/A | Yes | Yes | N/A | N/A | Yes​[a 2] | N/A | N/A | N/A | N/A
ALF | 2  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | N/A | Yes | N/A | N/A | N/A | N/A | N/A | N/A
AmigaE
| 2  | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | Yes​[a 2] | N/A | N/A | N/A | N/A
APL | 3  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | Yes | N/A | N/A | N/A | N/A | N/A | N/A | Array (multi-dimensional)
BETA
| 3  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | Yes | N/A | N/A | Yes​[a 2] | N/A | N/A | N/A | N/A
C++ | 7 (15)  | Yes​[7]​[8]​[9] | Library​[10] | Library​[11]​[12] | Library​[13]​[14] | Library​[15]​[16] | Yes | Yes​[17] | Yes​[a 3] | Yes | Library​[18]​[19] | Library​[20] | Yes​[a 2] | Library​[21] | N/A | Library​[22] | Array (multi-dimensional; using STL)
C# | 8 (15)  | Yes | Library​[23]​[24] | Library​[a 4] | Yes​[25] | Library​[26]​[27] | Yes​[a 5] | Yes​[28]​[29] | Yes | Yes | Library​[30] | Yes | Yes​[a 2] | Library​[a 6] | Library​[31] | Library​[32] | Reactive​[a 7]
ChucK
| 3  | Yes | N/A | N/A | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | Yes​[a 2] | N/A | N/A | N/A | N/A
Claire | 2  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | N/A | N/A | N/A | Yes​[a 2] | N/A | N/A | N/A | N/A
Clojure | 5  | Yes​[33]​[34] | N/A | N/A | Yes | N/A | Yes​[35] | Yes​[36] | N/A | N/A | Library​[37] | N/A | N/A | Yes​[38] | N/A | N/A | Multiple dispatch,​[39] Agents​[40]
Common Lisp | 7 (14)  | Library​[41] | Library​[42] | Library​[43] | Yes​[44] | Library​[45] | Yes | Yes | Yes​[46] | Yes | Library​[47] | Yes | Yes​[a 8]​[a 2]​[48] | Library​[49] | Library​[50] | Library​[51] | Multiple dispatch, meta-OOP system,​[52] Language is extensible via metaprogramming.
Curl | 5  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | Yes​[a 3] | Yes | N/A | Yes | Yes​[a 2] | N/A | N/A | N/A | N/A
Curry | 4  | Yes | Yes | N/A | N/A | N/A | Yes | N/A | N/A | N/A | Yes | N/A | N/A | N/A | N/A | N/A | N/A
D (version 2.0)​[53]​[54] | 7  | Yes​[a 9] | N/A | N/A | N/A | N/A | Yes | Yes​[55]​[a 3] | Yes​[a 3] | Yes | N/A | Yes | Yes​[a 2] | N/A | N/A | N/A | N/A
Delphi | 3  | N/A | N/A | N/A | N/A | N/A | N/A | N/A | Yes​[a 3] | Yes | N/A | N/A | Yes​[a 2] | N/A | N/A | N/A | N/A
Dylan
| 3  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | N/A | N/A | Yes | Yes​[a 2] | N/A | N/A | N/A | N/A
E | 3  | Yes | N/A | N/A | N/A | Yes | N/A | N/A | N/A | N/A | N/A | N/A | Yes​[a 2] | N/A | N/A | N/A | N/A
ECMAScript​[56]​[57] (ActionScript, E4X, JavaScript, JScript) | 4 (5)  | Partial​[a 10]​[a 11] | N/A | N/A | Library​[58]​[59] | N/A | Yes | N/A | N/A | Yes | N/A | Yes | Yes​[a 12] | Library​[60]​[61] | N/A | N/A | Reactive,​[a 13]​[62] event driven​[a 14]​[a 15]
Erlang | 3  | Yes | N/A | N/A | Yes | Yes | Yes | N/A | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | N/A
Elixir | 4  | Yes | N/A | N/A | N/A | Yes | Yes | Yes | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | N/A
Elm | 6  | Yes | N/A | Yes | Yes | N/A | Yes (pure)​[a 16] | N/A | Yes | N/A | N/A | N/A | N/A | Yes | N/A | N/A | Reactive
F# | 7 (8)  | Yes​[a 9] | N/A | Library​[a 4] | Yes | N/A | Yes | N/A | Yes | Yes | N/A | Yes | Yes​[a 2] | N/A | N/A | N/A | Reactive​[a 7]
Fortran | 4 (5)  | Yes | N/A | N/A | N/A | N/A | Yes​[a 16] | N/A | Yes​[a 17] | N/A | N/A | N/A | Yes​[a 2] | N/A | N/A | N/A | Array (multi-dimensional)
Go | 4  | Yes | N/A | N/A | N/A | N/A | N/A | N/A | N/A | Yes | N/A | Yes | N/A | Yes | N/A | N/A | N/A
Haskell | 8 (15)  | Yes | Library​[63] | Library​[64] | Yes | Library​[65] | Yes (lazy) (pure)​[a 16] | Yes​[66] | Yes | Yes | Library​[67] | N/A | Partial​[a 18] | Yes | Yes | Library​[68] | Literate, reactive, dependent types (partial)
Io | 4  | Yes​[a 9] | N/A | N/A | N/A | N/A | Yes | N/A | N/A | Yes | N/A | N/A | Yes​[a 12] | N/A | N/A | N/A | N/A

| 3  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | Yes | N/A | N/A | Yes​[a 2] | N/A | N/A | N/A | N/A
Java | 6  | Yes | Library​[69] | Library​[70] | N/A | N/A | Yes | N/A | Yes | Yes | N/A | Yes | Yes​[a 2] | N/A | N/A | N/A | N/A
Julia | 9 (17)  | Yes | Library​[71] | Library​[72]​[73] | Library​[74] | Yes | Yes (eager) | Yes | Yes | Yes | Library​[75] | Yes | Partial​[a 19] | Yes | N/A | Library​[76]​[77] | Multiple dispatch,
Array (multi-dimensional); optionally lazy​[78] and reactive (with libraries)
Kotlin | 8  | Yes | N/A | N/A | N/A | N/A | Yes | Yes | Yes | Yes | N/A | Yes | Yes | Yes | N/A | N/A | N/A
LabVIEW | 4  | Yes | N/A | Yes | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | Yes | N/A | Yes | N/A | N/A
Lava | 2  | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | Yes​[a 2] | N/A | Yes | N/A | N/A
LispWorks (version 6.0 with support for symmetric multi-processing, rules, logic (Prolog), CORBA) | 9  | Yes | N/A | N/A | N/A | Yes | Yes | Yes | N/A | Yes | Yes | Yes | Yes​[a 2] | N/A | N/A | Yes | N/A
Lua
| 3  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | Yes | N/A | N/A | Yes​[a 12] | N/A | N/A | N/A | N/A
MATLAB | 6 (10)  | Toolbox​[79] | Toolbox​[80] | Yes​[81] | N/A | Toolbox​[82] | N/A | Yes​[83] | Yes​[84] | N/A | N/A | Yes​[85] | Yes​[86] | N/A | Yes​[87] | N/A | Array (multi-dimensional)
Nemerle | 7  | Yes | N/A | N/A | N/A | N/A | Yes | Yes | Yes | Yes | N/A | Yes | Yes​[a 2] | N/A | N/A | N/A | N/A
Object Pascal | 4  | Yes | N/A | N/A | N/A | N/A | Yes | N/A | N/A | Yes | N/A | N/A | Yes​[a 2] | N/A | N/A | N/A | N/A
OCaml | 4  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | Yes | Yes | N/A | N/A | Yes​[a 2] | N/A | N/A | N/A | N/A
Oz | 11  | Yes | Yes | Yes | Yes | Yes | Yes | N/A | N/A | Yes | Yes | N/A | Yes​[a 2] | Yes | N/A | Yes | N/A
Perl
| 8 (9)  | Yes​[88] | N/A | Yes​[89] | N/A | N/A | Yes | Yes | N/A | Yes | N/A | Yes​[a 2] | Yes​[a 2] | Yes | N/A | N/A | N/A
PHP​[90]​[91]​[92] | 4  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | Yes | N/A | Yes | Yes​[a 2] | N/A | N/A | N/A | N/A
Poplog | 3  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | Yes | Yes | N/A | N/A | N/A | N/A | N/A | N/A
Prograph | 3  | N/A | N/A | Yes | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | Yes​[a 2] | N/A | Yes | N/A | N/A
Python | 5 (10)  | Library​[93]​[94] | Library​[95] | N/A  | N/A  | Library​[96] | Yes  | Yes​[97]​[98] | Yes​[99]​[100] | Yes | Library​[101] | Yes | Yes​[a 2] | N/A | N/A | N/A | Structured
R | 4 (6)  | Library​[102] | N/A | N/A | N/A | Library​[103] | Yes | N/A | N/A | Yes | N/A | Yes | Yes | Yes​[104] | N/A | N/A | Array (multi-dimensional)
Racket | 10  | Yes​[105] | Yes​[106] | Yes​[107] | N/A | Yes​[108] | Yes | Yes | N/A | Yes | Yes | Yes | Yes | N/A | N/A | N/A | Lazy​[109]
Raku | 10  | Yes​[110] | Library​[111] | Yes​[112] | N/A | Library​[113] | Yes | Yes​[114] | Yes​[115] | Yes | N/A | Yes​[116] | Yes​[117] | Yes | N/A | N/A | Multiple dispatch, lazy lists, reactive.
ROOP | 3  | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | Yes | Yes | N/A | N/A | N/A | N/A | Yes | N/A
Ruby | 5  | N/A | N/A | N/A | N/A | N/A | Yes | Yes | N/A | Yes | N/A | Yes | Yes​[a 2] | N/A | N/A | N/A | N/A
Rust (version 1.0.0-alpha) | 6  | Yes​[a 9] | N/A | N/A | N/A | N/A | Yes | Yes​[118]​[119] | Yes​[120] | Yes | N/A | N/A | Yes | N/A | N/A | N/A | Linear, affline, and ownership types
Sather
| 2  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | N/A | N/A | N/A | Yes​[a 2] | N/A | N/A | N/A | N/A
Scala​[121]​[122] | 9  | Yes​[a 9] | N/A | Yes​[a 20] | Yes | N/A | Yes | Yes | Yes | Yes | N/A | Yes | Yes​[a 2] | N/A | N/A | N/A | N/A
Simula
| 2  | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | Yes​[a 2] | N/A | N/A | N/A | N/A
SISAL | 3  | Yes | N/A | Yes | N/A | N/A | Yes | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A
Spreadsheets | 2  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A | N/A | N/A | N/A | N/A | N/A | Yes | N/A | N/A
Swift | 7  | Yes | N/A | N/A | N/A | N/A | Yes | Yes | Yes | Yes | N/A | Yes | Yes​[a 2] | N/A | N/A | N/A | Block-structured
Tcl with Snit extension
| 3  | N/A | N/A | N/A | N/A | N/A | Yes​[123] | N/A | N/A | Yes | N/A | N/A | Yes​[a 12]​[124] | N/A | N/A | N/A | N/A
Visual Basic .NET | 6 (7)  | Yes | N/A | Library​[a 4] | N/A | N/A | Yes | N/A | Yes | Yes | N/A | Yes | Yes​[a 2] | N/A | N/A | N/A | Reactive​[a 7]
Windows PowerShell | 6  | N/A | N/A | N/A | N/A | N/A | Yes | N/A | Yes | Yes | N/A | Yes | Yes​[a 2] | Yes | N/A | N/A | N/A
Wolfram Language & Mathematica | 13​[125] (14)  | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes​[126] | N/A | Yes | Knowledge Based

## See also

* Carbon (programming language) — multi-paradigm language being developed at Google to be a successor to C++
* Programming paradigm
* List of programming languages by type
* Domain-specific language
* Domain-specific multimodeling

## Notes

1. ↑ rendezvous and monitor-like based
2. ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.26 2.27 2.28 2.29 2.30 2.31 2.32 2.33 2.34 class-based
3. ↑ 3.0 3.1 3.2 3.3 3.4 template metaprogramming
4. ↑ 4.0 4.1 4.2 using TPL Dataflow
5. ↑ only lambda support (lazy functional programming)
6. ↑ using TPL Dataflow
7. ↑ 7.0 7.1 7.2 using Reactive Extensions (Rx)
8. ↑ multiple dispatch, method combinations
9. ↑ 9.0 9.1 9.2 9.3 9.4 actor programming
10. ↑ promises, native extensions
11. ↑ using Node.js' cluster module or child_process.fork method, web workers in the browser, etc.
12. ↑ 12.0 12.1 12.2 12.3 Prototype-based
13. ↑ using Reactive Extensions (RxJS)
14. ↑ in Node.js via their events module
15. ↑ in browsers via their native EventTarget API
16. ↑ 16.0 16.1 16.2 purely functional
17. ↑ parameterized classes
18. ↑ immutable
19. ↑ Uses structs with function polymorphism and multiple dispatch
20. ↑ Akka

## Citations

1. ↑ Bragg, S.D.; Driskill, C.G. (20–22 September 1994). "Diagrammatic-graphical programming languages and DoD-STD-2167A". Proceedings of AUTOTESTCON '94 (Facebook. Institute of Electrical and Electronics Engineers (IEEE). pp. 211–220. doi:10.1109/AUTEST.1994.381508. 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. ↑ Thread support
8. ↑ Atomics support
9. ↑ Memory model
10. ↑ Gecode
11. ↑ SystemC
12. ↑ Boost.Iostreams
13. ↑ Boolinq
14. ↑ "AraRat". https://www.cs.technion.ac.il/~lkeren/scp.pdf.
15. ↑ OpenMPI
16. ↑ Boost.MPI
17. ↑ Boost.MPL
18. ↑ LC++
19. ↑ Castor
20. ↑ Reflect Library
21. ↑ N3534
22. ↑ Boost.Spirit
23. ↑ Decider
24. ↑ Zen
25. ↑ LINQ
26. ↑ Orleans
27. ↑ WCF
28. ↑ Reflection
29. ↑ Source generators
30. ↑ Guan
31. ↑ NetPrints
32. ↑ RulesEngine
33. ↑ Clojure - Concurrent Programming
34. ↑ Clojure - core.async
35. ↑ Clojure - Functional Programming
36. ↑ Clojure - Macros
37. ↑ Clojure - core.logic
38. ↑ Clojure - Threading Macros Guide
39. ↑ Multimethods and Hierarchies
40. ↑ Agents and Asynchronous Actions
41. ↑ "concurrency". https://www.cliki.net/Concurrency.
42. ↑ [1] constraint programming inside CL through extensions
43. ↑ [2] dataflow extension
44. ↑ [3] by creating DSLs using the built-in metaprogramming; also see note on functional, constraint and logic paradigms, which are part of declarative
45. ↑ [4] MPI, etc via language extensions
46. ↑ template metaprogramming using macros (see C++)
47. ↑ [5] [6] [7] Prolog implemented as a language extension
48. ↑ Common Lisp Object System see Wikipedia article on CLOS, the Common Lisp Object System.
49. ↑ implemented by the user via a short macro, example of implementation
50. ↑ \- Visual programming tool based on Common Lisp
51. ↑ [8] rule-based programming extension
52. ↑ [9] through the Meta Object Protocol
53. ↑ D Language Feature Table
54. ↑ Phobos std.algorithm
55. ↑ D language String Mixins
56. ↑ The Little JavaScripter demonstrates fundamental commonality with Scheme, a functional language.
57. ↑ Object-Oriented Programming in JavaScript gives an overview of object-oriented programming techniques in JavaScript.
58. ↑ "React – A JavaScript library for building user interfaces". 2019-04-08. https://reactjs.org/.
59. ↑ "TNG-Hooks". 2019-04-08. https://github.com/getify/tng-hooks.
60. ↑ "Lodash documentation". 2019-04-08. https://lodash.com/docs/4.17.11#flow.
61. ↑ "mori". 2019-04-08. https://swannodette.github.io/mori/#pipeline.
62. ↑ "TNG-Hooks". 2019-04-08. https://github.com/getify/tng-hooks.
63. ↑ "Prolog embedding". https://hackage.haskell.org/package/hswip.
64. ↑ "Functional Reactive Programming". https://wiki.haskell.org/Functional_Reactive_Programming.
65. ↑ Cloud Haskell
66. ↑ "Template Haskell". https://wiki.haskell.org/Template_Haskell.
67. ↑ "Logict: A backtracking logic-programming monad". https://hackage.haskell.org/package/logict.
68. ↑ Kollmansberger, Steve; Erwig, Martin (30 May 2006). "Haskell Rules: Embedding Rule Systems in Haskell". https://web.engr.oregonstate.edu/~erwig/HaskellRules/HaskellRules_June06.pdf.
69. ↑ https://jcp.org/en/jsr/detail?id=331 JSR 331: Constraint Programming API
70. ↑ https://github.com/GoogleCloudPlatform/DataflowJavaSDK Google Cloud Platform Dataflow SDK
71. ↑ "JuliaOpt/JuMP.jl". JuliaOpt. 11 February 2020. https://github.com/JuliaOpt/JuMP.jl.
72. ↑ "GitHub - MikeInnes/DataFlow.jl". 2019-01-15. https://github.com/MikeInnes/DataFlow.jl.
73. ↑ "GitHub - JuliaGizmos/Reactive.jl: Reactive programming primitives for Julia". 2018-12-28. https://github.com/JuliaGizmos/Reactive.jl.
74. ↑ https://github.com/davidanthoff/Query.jl Query almost anything in julia
75. ↑ https://github.com/lilinjn/LilKanren.jl A collection of Kanren implementations in Julia
76. ↑ "GitHub - abeschneider/PEGParser.jl: PEG Parser for Julia". 2018-12-03. https://github.com/abeschneider/PEGParser.jl.
77. ↑ "GitHub - gitfoxi/Parsimonious.jl: A PEG parser generator for Julia". 2017-08-03. https://github.com/gitfoxi/Parsimonious.jl.
78. ↑ Lazy https://github.com/MikeInnes/Lazy.jl
79. ↑ "Execute loop iterations in parallel". http://mathworks.com/help/distcomp/parfor.html.
80. ↑ "Write Constraints". https://mathworks.com/help/optim/write-constraints.html.
81. ↑ "Getting Started with SimEvents". https://mathworks.com/help/simevents/getting-started-with-simevents.html.
82. ↑ "Execute loop iterations in parallel". http://mathworks.com/help/distcomp/parfor.html.
83. ↑ "Execute MATLAB expression in text - MATLAB eval". https://mathworks.com/help/matlab/ref/eval.html.
84. ↑ "Determine class of object". https://mathworks.com/help/matlab/ref/class.html.
85. ↑ "Class Metadata". https://mathworks.com/help/matlab/get-information-about-classes-and-objects.html.
86. ↑ "Object-Oriented Programming". https://mathworks.com/help/matlab/object-oriented-programming.html.
87. ↑ "Simulink". https://mathworks.com/help/simulink/.
88. ↑ interpreter based threads
89. ↑ Higher Order Perl
90. ↑ PHP Manual, Chapter 17. Functions
91. ↑ PHP Manual, Chapter 19. Classes and Objects (PHP 5)
92. ↑ PHP Manual, Anonymous functions
93. ↑ "Parallel Processing and Multiprocessing in Python". https://wiki.python.org/moin/ParallelProcessing.
94. ↑ "threading — Higher-level threading interface". https://docs.python.org/2/library/threading.html.
95. ↑ "python-constraint". https://pypi.python.org/pypi/python-constraint.
96. ↑ "DistributedProgramming". https://wiki.python.org/moin/DistributedProgramming.
97. ↑ "Chapter 9. Metaprogramming". http://chimera.labs.oreilly.com/books/1230000000393/ch09.html.
98. ↑ "Metaprogramming". https://python-3-patterns-idioms-test.readthedocs.io/en/latest/Metaprogramming.html.
99. ↑ "PEP 443 – Single-dispatch generic functions". https://www.python.org/dev/peps/pep-0443/.
100. ↑ "PEP 484 – Type Hints". https://www.python.org/dev/peps/pep-0484/#generics.
101. ↑ "PyDatalog". https://sites.google.com/site/pydatalog/.
102. ↑ "Futureverse". https://www.futureverse.org/.
103. ↑ "future batchtools". https://future.batchtools.futureverse.org/.
104. ↑ "Magrittr: A Forward Pipe Operator for R". 17 November 2020. https://cran.r-project.org/package=magrittr.
105. ↑ Racket Guide: Concurrency and Synchronization
106. ↑ The Rosette Guide
107. ↑ FrTime: A Language for Reactive Programs
108. ↑ Racket Guide: Distributed Places
109. ↑ Lazy Racket
110. ↑ Channels and other mechanisms
111. ↑ "Problem Solver module". https://raku.land/github:FCO/ProblemSolver.
112. ↑ Feed operator
113. ↑ https://github.com/perl6/doc/issues/1744#issuecomment-360565196 Cro module
114. ↑ "Meta-programming: What, why and how". 2011-12-14. https://perl6advent.wordpress.com/2011/12/14/meta-programming-what-why-and-how/.
115. ↑ https://perl6advent.wordpress.com/2009/12/18/day-18-roles/ Parametrized Roles
116. ↑ "Meta-object protocol (MOP)". https://docs.perl6.org/language/mop.
117. ↑ https://docs.perl6.org/language/classtut Classes and Roles
118. ↑ "The Rust macros guide". http://doc.rust-lang.org/1.0.0-alpha/book/macros.html.
119. ↑ "The Rust compiler plugins guide". http://doc.rust-lang.org/1.0.0-alpha/book/plugins.html.
120. ↑ The Rust Reference §6.1.3.1
121. ↑ An Overview of the Scala Programming Language
122. ↑ Scala Language Specification
123. ↑ "Tcl Programming/Introduction". https://en.wikibooks.org/wiki/Tcl_Programming/Introduction#One_language.2C_many_styles.
124. ↑ "TCLLIB - Tcl Standard Library: snitfaq". https://tmml.sourceforge.net/doc/tcllib/snitfaq.html.
125. ↑ Notes for Programming Language Experts, Wolfram Language Documentation.
126. ↑ External Programs, Wolfram Language Documentation.

## References

* Jim Coplien, Multiparadigm Design for C++, Addison-Wesley Professional, 1998.

Template:Programming paradigms navbox

* v
* t
* e

Types of programming languages

* Actor-based
* Array
* Aspect-oriented
* Class-based
* Concatenative
* Concurrent
* Dataflow
* Declarative
* Domain-specific
* Dynamic
* Esoteric
* Event-driven
* Extensible
* Functional
* Imperative
* Logic
* Macro
* Metaprogramming
* Multi-paradigm
* Object-based
* Object-oriented
* Pipeline
* Procedural
* Prototype-based
* Reflective
* Rule-based
* Scripting
* Stack based
* Synchronous
* Tactile
* Templating

* Assembly
* Compiled
* Interpreted
* Machine

* Low-level
* High-level
* Very high-level

* First generation
* Second generation
* Third generation
* Fourth generation
* Fifth generation

* Non-English-based
* Visual

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Comparison of multi-paradigm programming languages. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Comparison_of_multi-paradigm_programming_languages&oldid=4348929"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template