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. ↑
  45. ↑ "Parallel Processing and Multiprocessing in Python". wiki.python.org. Retrieved 21 October 2016.
  46. ↑ "threading — Higher-level threading interface". docs.python.org. Retrieved 21 October 2016.
  47. ↑ "python-constraint". pypi.python.org. Retrieved 21 October 2016.
  48. ↑ "DistributedProgramming". wiki.python.org. Retrieved 21 October 2016.
  49. ↑ "Chapter 9. Metaprogramming". chimera.labs.oreilly.com. Retrieved 22 October 2016.
  50. ↑ "Metaprogramming". readthedocs.io. Retrieved 22 October 2016.
  51. ↑ "PEP 443 -- Single-dispatch generic functions". python.org. Retrieved 22 October 2016.
  52. ↑ "PEP 484 -- Type Hints". python.org. Retrieved 22 October 2016.
  53. ↑ "PyDatalog". Retrieved 22 October 2016.
  54. ↑ "The Rust macros guide". Rust. Retrieved 19 January 2015.
  55. ↑ "The Rust compiler plugins guide". Rust. Retrieved 19 January 2015.
  56. ↑ The Rust Reference §6.1.3.1
  57. ↑ An Overview of the Scala Programming Language
  58. ↑ Scala Language Specification
  59. ↑ "Tcl Programming/Introduction". en.wikibooks.org. Retrieved 22 October 2016.
  60. ↑ "TCLLIB - Tcl Standard Library: snitfaq:". sourceforge.net. Retrieved 22 October 2016.
  61. ↑ 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.