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. "The Rust macros guide". http://rust-lang.org/. Retrieved 19 January 2015. External link in |website= (help)
  44. "The Rust compiler plugins guide". http://rust-lang.org. Retrieved 19 January 2015. External link in |website= (help)
  45. The Rust Reference §6.1.3.1
  46. An Overview of the Scala Programming Language
  47. Scala Language Specification
  48. 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.