Comparison of multi-paradigm programming languages

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.

Language overview

List of multi-paradigm programming languages
Language Num­ber of Para­digms Con­cur­rent Con­straints Data­flow De­clar­at­ive Dis­trib­uted Func­tion­al Meta­pro­gram­ming Gen­er­ic Im­per­at­ive Lo­gic Re­flec­tion Ob­ject-ori­ented Pipe­lines Visu­al Rule-based Oth­er para­digms
Ada[2][3][4][5][6] 5 Yes[a 1] NoNoNoYes NoNoYes Yes NoNoYes[a 2] NoNoNoNo
ALF 2 No No No No No Yes No No No Yes No No No No No No
AmigaE 2 No No No No No No No No Yes No No Yes[a 2] No No No No
APL 2 No No No No No Yes No No Yes No No No No No No No
BETA 3 No NoNoNoNoYes NoNoYes NoNoYes[a 2] NoNoNoNo
C++ 7 (14) 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] Yes[21] No Library[22] No
C# 6 (7) YesNo Library[a 4] No No Yes[a 5]No YesYes No YesYes[a 2]No No No reactive[a 6]
ChucK 3 Yes NoNoNoNoNoNoNoYes NoNoYes[a 2] No NoNoNo
Claire 2 No No No No No Yes No No No No No Yes[a 2] No No No No
Common Lisp (some other paradigms are implemented as libraries) 5 NoNoNoNoNoYes Yes NoYes NoYes Yes[a 2] NoNoNoNo
Curl 5 NoNoNoNoNoYes NoYes[a 3] Yes NoYes Yes[a 2] NoNoNoNo
Curry 4 Yes Yes NoNoNoYes NoNo NoYes NoNoNoNoNoNo
D (version 2.0)[23][24] 6 Yes[a 7] NoNoNoNoYes Yes[25][a 3] Yes[a 3] Yes NoNoYes[a 2] NoNoNoNo
Dylan 3 No No No No No Yes No No No No Yes Yes[a 2]No No No No
E 3 Yes No No No Yes No No No No No No Yes[a 2] No No No No
ECMAScript[26][27] (ActionScript, E4X, JavaScript, JScript) 4 (5) partial (promises, native extensions)[a 8] No No No No Yes No No Yes No Yes Yes[a 9] No No No reactive[a 10]
Embarcadero Delphi 3 No No No No No No No Yes[a 3] Yes No No Yes[a 2] No No No No
Erlang 3 Yes NoNoNoYes Yes NoNoNoNoNoNoNoNoNoNo
Elixir 4 Yes NoNoNoYes Yes YesNoNoNoNoNoNoNoNoNo
Elm 6 Yes NoYesYesNo Yes NoYesNoNoNoNoYesNoNo reactive
F# 7 (8) Yes[a 7] No Library[a 4] Yes No YesNo YesYes No YesYes[a 2]No No No reactive[a 6]
Falcon 4 NoNo NoNoNoYes Yes NoNoNoYes Yes[a 2] NoNoNoNo
Fortran 4 Yes NoNoNoNoYes[a 11]NoYes[a 12] NoNoNoYes[a 2] No NoNoNo
Io 4 Yes[a 7] NoNoNoNoYesNoNoYes NoNoYes[a 9] NoNoNoNo
J 3 No NoNoNoNoYes NoNoYes NoNoYes[a 2] NoNoNoNo
Java 6 Yes NoNoNoNoYesNoYes Yes NoYes Yes[a 2] NoNoNo No
Julia 9 (10) YesLibrary[28]NoNoYesYesYesYes Yes NoYesYes "multiple dispatch" YesNoNo Multiple dispatch
and Array
LabVIEW 4 Yes No Yes No No No No No No No No Yes No Yes NoNo
Lava 2 No No No No No No No No No No No Yes[a 2] NoYes NoNo
Leda 4 NoNoNoNoNoYesNoNoYes Yes NoYes[a 2] NoNoNoNo
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[a 2] No No Yes No
Lua 3 No No No No No Yes No No Yes No No Yes[a 9] No No No No
MATLAB 6 (9) Toolbox[29]Toolbox[30]Yes[31]NoToolbox[32] NoYes[33]Yes[34] NoNoYes[35] Yes[36]NoYes[37]No Array
Nemerle 7 Yes No No No No Yes Yes YesYes No Yes Yes[a 2] No No No No
Object Pascal 4 Yes NoNoNoNoYes NoNoYes NoNoYes[a 2] NoNoNoNo
OCaml 4 NoNoNoNoNoYesNoYes Yes NoNoYes[a 2] NoNoNoNo
Oz 9 Yes Yes Yes No Yes Yes No No Yes Yes No Yes[a 2] No No Yes No
Perl 8 (9) Yes[38] Library[39]Yes[40]NoNoYes YesNoYes NoYes[a 2]Yes[a 2] YesNoNoNo
PHP[41][42][43] 4 No NoNoNoNoYes No NoYes No YesYes[a 2] NoNoNoNo
Picat[44] 8 No Yes No Yes No Yes No Yes Yes Yes No No Yes No Yes Yes
Pliant 3 No NoNoNoNoYes NoNoYes NoNoYes[a 2] NoNoNoNo
PointDragon 3 NoNoNoNoNoNo NoNoYes NoNoYes NoYes NoNo
Poplog 3 NoNoNo NoNo Yes NoNoYes Yes NoNoNoNoNoNo
Prograph 3 NoNoYes NoNoNoNoNoNoNoNoYes[a 2] NoYes NoNo
Python 5 (10) Library[45][46] Library[47] No No Library[48] Partial Yes[49][50] Yes[51][52]Yes Library[53]YesYes[a 2] NoNoNo structured
R 4 No NoNoNoNoYesNoNo Yes NoYes Yes NoNoNo Array
Racket 6 No NoNoNoNoYesYesNo Yes YesYes Yes NoNoNo No
ROOP 3 NoNoNoNoNoNoNo NoYes Yes NoNoNoNoYes No
Ruby 4 NoNoNoNoNoYesNo NoYes No YesYes[a 2] NoNoNoNo
Rust (version 1.0.0-alpha) 6 Yes[a 7] NoNoNoNoYesYes[54][55]Yes[56] YesNoNoYesNoNoNo linear, affline, and ownership types
Sather 2 No No No No No Yes No No No No No Yes[a 2] No No No No
Scala[57][58] 9 Yes[a 7] No Yes [a 13] Yes No YesYes YesYes No YesYes[a 2]No No No No
Simula 2 No No No No No No No No Yes No No Yes[a 2] No No No No
SISAL 3 Yes NoYes NoNoYes NoNoNoNoNoNoNoNo NoNo
Spreadsheets 2 No No No No No Yes No No No No No No No Yes NoNo
Swift 3 No No No No No Yes No No Yes No No Yes[a 2] No No No block-structured
Tcl with Snit extension 3 No No No No No Yes[59] No No Yes No No Yes[a 9][60] No No No No
Visual Basic .NET 6 (7) YesNo Library[a 4] No No Yes No YesYes No YesYes[a 2]No No No reactive[a 6]
Windows PowerShell 6 NoNo NoNoNoYes NoYes Yes NoYes Yes[a 2] YesNoNoNo
Wolfram Language & Mathematica 13[61] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Knowledge Based

See also

Notes

  1. rendezvous and monitor-like based
  2. 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 35 36 37 38 Class-based
  3. 1 2 3 4 5 Template metaprogramming
  4. 1 2 3 using TPL Dataflow
  5. only lambda support (lazy functional programming)
  6. 1 2 3 using Reactive Extensions (Rx)
  7. 1 2 3 4 5 actor programming
  8. using Node.js' cluster module or child_process.fork method, web workers in the browser, etc.
  9. 1 2 3 4 Prototype-based
  10. using Reactive Extensions (RxJS)
  11. purely functional
  12. parameterized classes
  13. Akka

References

  1. Bragg, S.D.; Driskill, C.G. (20–22 September 1994). "Diagrammatic-graphical programming languages and DoD-STD-2167A". IEEEXplore. IEEE.
  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
  15. OpenMPI
  16. Boost.MPI
  17. Boost.MPL
  18. LC++
  19. Castor
  20. Reflect Library
  21. N3534
  22. Boost.Spirit
  23. D Language Feature Table
  24. Phobos std.algorithm
  25. D language String Mixins
  26. The Little JavaScripter demonstrates fundamental commonality with Scheme, a functional language.
  27. Object Oriented Programming in JavaScript gives an overview of object-oriented programming techniques in JavaScript.
  28. https://jump.readthedocs.io/en/latest/
  29. "Execute loop iterations in parallel". mathworks.com. Retrieved 21 October 2016.
  30. "Write Constraints". mathworks.com. Retrieved 21 October 2016.
  31. "Getting Started with SimEvents". mathworks.com. Retrieved 21 October 2016.
  32. "Execute loop iterations in parallel". mathworks.com. Retrieved 21 October 2016.
  33. "Execute MATLAB expression in text - MATLAB eval". mathworks.com. Retrieved 21 October 2016.
  34. "Determine class of object". mathworks.com. Retrieved 21 October 2016.
  35. "Class Metadata". mathworks.com. Retrieved 21 October 2016.
  36. "Object-Oriented Programming". mathworks.com. Retrieved 21 October 2016.
  37. "Simulink". mathworks.com. Retrieved 21 October 2016.
  38. interpreter based threads
  39. Moose
  40. Higher Order Perl
  41. PHP Manual, Chapter 17. Functions
  42. PHP Manual, Chapter 19. Classes and Objects (PHP 5)
  43. PHP Manual, Anonymous functions
  44. "Parallel Processing and Multiprocessing in Python". wiki.python.org. Retrieved 21 October 2016.
  45. "threading — Higher-level threading interface". docs.python.org. Retrieved 21 October 2016.
  46. "python-constraint". pypi.python.org. Retrieved 21 October 2016.
  47. "DistributedProgramming". wiki.python.org. Retrieved 21 October 2016.
  48. "Chapter 9. Metaprogramming". chimera.labs.oreilly.com. Retrieved 22 October 2016.
  49. "Metaprogramming". readthedocs.io. Retrieved 22 October 2016.
  50. "PEP 443 -- Single-dispatch generic functions". python.org. Retrieved 22 October 2016.
  51. "PEP 484 -- Type Hints". python.org. Retrieved 22 October 2016.
  52. "PyDatalog". Retrieved 22 October 2016.
  53. "The Rust macros guide". Rust. Retrieved 19 January 2015.
  54. "The Rust compiler plugins guide". Rust. Retrieved 19 January 2015.
  55. The Rust Reference §6.1.3.1
  56. An Overview of the Scala Programming Language
  57. Scala Language Specification
  58. "Tcl Programming/Introduction". en.wikibooks.org. Retrieved 22 October 2016.
  59. "TCLLIB - Tcl Standard Library: snitfaq:". sourceforge.net. Retrieved 22 October 2016.
  60. Notes for Programming Language Experts, Wolfram Language Documentation.
This article is issued from Wikipedia - version of the 10/29/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.