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
Lan­guage 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 (13) 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 2 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) 3 No No No No No Yes No No Yes No No Yes[a 8] No No No No
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 42 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 9]NoYes[a 10] NoNoNoYes[a 2] No NoNoNo
Io 4 Yes[a 7] NoNoNoNoYesNoNoYes NoNoYes[a 8] NoNoNoNo
J 3 No NoNoNoNoYes NoNoYes NoNoYes[a 2] NoNoNoNo
Java 6 Yes NoNoNoNoYesNoYes Yes NoYes Yes[a 2] NoNoNo No
Julia 9 YesNoNoNoYesYesYesYes Yes NoNoYes "multiple dispatch" YesNoNo Multiple dispatch
and Array
LabVIEW 2 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 8] No No No No
MATLAB 9 Yes[28]Yes[29]Yes[30]NoYes[31] NoYes[32]Yes[33] NoNoYes[34] Yes[35]NoYes[36]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[37] Library[38]Yes[39]NoNoYes YesNoYes NoYes[a 2]Yes[a 2] YesNoNoNo
PHP[40][41][42] 4 No NoNoNoNoYes No NoYes No YesYes[a 2] NoNoNoNo
Picat[43] 9 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 4 LibraryNoNoNoNoPartial YesNoYes NoYesYes[a 2] NoNoNoNo
R 5 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) 8 Yes[a 7] NoNoNoNoYesYes[44][45]Yes[46] 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[47][48] 9 Yes[a 7] No Yes [a 11] 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 4 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 No No Yes No No Yes[a 8] 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 14[49] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Knowledge Based
  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. 1 2 3 4 Prototype-based
  9. ↑ purely functional
  10. ↑ parameterized classes
  11. ↑ Akka

See also

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. ↑ Execute loop iterations in parallel with parfor
  29. ↑ Write constraints with Optimization Toolbox
  30. ↑ SimEvents
  31. ↑ Execute loop iterations in parallel with parfor
  32. ↑ Execute MATLAB expression in text string with eval
  33. ↑ Determine class of object
  34. ↑ Getting information about classes and objects
  35. ↑ Object-oriented programming with MATLAB
  36. ↑ Simulink
  37. ↑ interpreter based threads
  38. ↑ Moose
  39. ↑ Higher Order Perl
  40. ↑ PHP Manual, Chapter 17. Functions
  41. ↑ PHP Manual, Chapter 19. Classes and Objects (PHP 5)
  42. ↑ PHP Manual, Anonymous functions
  43. ↑
  44. ↑ "The Rust macros guide". http://rust-lang.org/. Retrieved 19 January 2015. External link in |website= (help)
  45. ↑ "The Rust compiler plugins guide". http://rust-lang.org. Retrieved 19 January 2015. External link in |website= (help)
  46. ↑ The Rust Reference §6.1.3.1
  47. ↑ An Overview of the Scala Programming Language
  48. ↑ Scala Language Specification
  49. ↑ Notes for Programming Language Experts, Wolfram Language Documentation.
This article is issued from Wikipedia - version of the Tuesday, April 19, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.