Comparison of multi-paradigm programming languages

From Wikipedia, the free encyclopedia
(Redirected from Multi-paradigm)
Jump to navigation Jump to search

Template:Short description Script error: No such module "Unsubst". 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.

  • 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

Template:Sticky header

See also

Notes

<templatestyles src="Reflist/styles.css" />

  1. ↑ rendezvous and monitor-like based
  2. ↑ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai class-based
  3. ↑ a b c d e template metaprogramming
  4. ↑ a b c using TPL Dataflow
  5. ↑ only lambda support (lazy functional programming)
  6. ↑ a b c using Reactive Extensions (Rx)
  7. ↑ multiple dispatch, method combinations
  8. ↑ a b c d e actor programming
  9. ↑ promises, native extensions
  10. ↑ using Node.js' cluster module or child_process.fork method, web workers in the browser, etc.
  11. ↑ a b c d Prototype-based
  12. ↑ using Reactive Extensions (RxJS)
  13. ↑ in Node.js via their events module
  14. ↑ in browsers via their native EventTarget API
  15. ↑ a b c purely functional
  16. ↑ parameterized classes
  17. ↑ immutable
  18. ↑ Uses structs with function polymorphism and multiple dispatch
  19. ↑ Akka Script error: No such module "webarchive".

Script error: No such module "Check for unknown parameters".

Citations

<templatestyles src="Reflist/styles.css" />

  1. ↑ Script error: No such module "citation/CS1".
  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. ↑ Script error: No such module "citation/CS1".
  15. ↑ OpenMPI
  16. ↑ Boost.MPI
  17. ↑ Boost.MPL
  18. ↑ LC++
  19. ↑ Castor Script error: No such module "webarchive".
  20. ↑ Reflect Library
  21. ↑ N3534
  22. ↑ Boost.Spirit
  23. ↑ Clojure - Concurrent Programming
  24. ↑ Clojure - core.async
  25. ↑ Clojure - Functional Programming
  26. ↑ Clojure - Macros
  27. ↑ Clojure - core.logic
  28. ↑ Clojure - Threading Macros Guide
  29. ↑ Multimethods and Hierarchies
  30. ↑ Agents and Asynchronous Actions
  31. ↑ Script error: No such module "citation/CS1".
  32. ↑ [1] constraint programming inside CL through extensions
  33. ↑ [2] dataflow extension
  34. ↑ [3] by creating DSLs using the built-in metaprogramming; also see note on functional, constraint and logic paradigms, which are part of declarative
  35. ↑ [4] MPI, etc via language extensions
  36. ↑ template metaprogramming using macros (see C++)
  37. ↑ [5] [6] [7] Prolog implemented as a language extension
  38. ↑ Common Lisp Object System see Wikipedia article on CLOS, the Common Lisp Object System.
  39. ↑ implemented by the user via a short macro, example of implementation
  40. ↑ - Visual programming tool based on Common Lisp
  41. ↑ [8] rule-based programming extension
  42. ↑ [9] Script error: No such module "webarchive". through the Meta Object Protocol
  43. ↑ D Language Feature Table
  44. ↑ Phobos std.algorithm
  45. ↑ D language String Mixins
  46. ↑ The Little JavaScripter demonstrates fundamental commonality with Scheme, a functional language.
  47. ↑ Object-Oriented Programming in JavaScript Script error: No such module "webarchive". gives an overview of object-oriented programming techniques in JavaScript.
  48. ↑ Script error: No such module "citation/CS1".
  49. ↑ Script error: No such module "citation/CS1".
  50. ↑ Script error: No such module "citation/CS1".
  51. ↑ Script error: No such module "citation/CS1".
  52. ↑ Script error: No such module "citation/CS1".
  53. ↑ Script error: No such module "citation/CS1".
  54. ↑ Script error: No such module "citation/CS1".
  55. ↑ Cloud Haskell
  56. ↑ Script error: No such module "citation/CS1".
  57. ↑ Script error: No such module "citation/CS1".
  58. ↑ Script error: No such module "citation/CS1".
  59. ↑ https://jcp.org/en/jsr/detail?id=331 JSR 331: Constraint Programming API
  60. ↑ https://github.com/GoogleCloudPlatform/DataflowJavaSDK Google Cloud Platform Dataflow SDK
  61. ↑ Script error: No such module "citation/CS1".
  62. ↑ Script error: No such module "citation/CS1".
  63. ↑ Script error: No such module "citation/CS1".
  64. ↑ https://github.com/davidanthoff/Query.jl Query almost anything in julia
  65. ↑ https://github.com/lilinjn/LilKanren.jl A collection of Kanren implementations in Julia
  66. ↑ Script error: No such module "citation/CS1".
  67. ↑ Script error: No such module "citation/CS1".
  68. ↑ Lazy https://github.com/MikeInnes/Lazy.jl
  69. ↑ Script error: No such module "citation/CS1".
  70. ↑ Script error: No such module "citation/CS1".
  71. ↑ Script error: No such module "citation/CS1".
  72. ↑ Script error: No such module "citation/CS1".
  73. ↑ Script error: No such module "citation/CS1".
  74. ↑ Script error: No such module "citation/CS1".
  75. ↑ Script error: No such module "citation/CS1".
  76. ↑ Script error: No such module "citation/CS1".
  77. ↑ Script error: No such module "citation/CS1".
  78. ↑ interpreter based threads
  79. ↑ Higher Order Perl
  80. ↑ PHP Manual, Chapter 17. Functions
  81. ↑ PHP Manual, Chapter 19. Classes and Objects (PHP 5)
  82. ↑ PHP Manual, Anonymous functions
  83. ↑ Script error: No such module "citation/CS1".
  84. ↑ Script error: No such module "citation/CS1".
  85. ↑ Script error: No such module "citation/CS1".
  86. ↑ Script error: No such module "citation/CS1".
  87. ↑ Script error: No such module "citation/CS1".
  88. ↑ Script error: No such module "citation/CS1".
  89. ↑ Script error: No such module "citation/CS1".
  90. ↑ Script error: No such module "citation/CS1".
  91. ↑ Script error: No such module "citation/CS1".
  92. ↑ Script error: No such module "citation/CS1".
  93. ↑ Script error: No such module "citation/CS1".
  94. ↑ Script error: No such module "citation/CS1".
  95. ↑ Racket Guide: Concurrency and Synchronization
  96. ↑ The Rosette Guide
  97. ↑ FrTime: A Language for Reactive Programs
  98. ↑ Racket Guide: Distributed Places
  99. ↑ Lazy Racket
  100. ↑ Channels and other mechanisms
  101. ↑ Script error: No such module "citation/CS1".
  102. ↑ Feed operator
  103. ↑ https://github.com/perl6/doc/issues/1744#issuecomment-360565196 Cro module
  104. ↑ Script error: No such module "citation/CS1".
  105. ↑ https://perl6advent.wordpress.com/2009/12/18/day-18-roles/ Parametrized Roles
  106. ↑ Script error: No such module "citation/CS1".
  107. ↑ https://docs.perl6.org/language/classtut Classes and Roles
  108. ↑ Script error: No such module "citation/CS1".
  109. ↑ Script error: No such module "citation/CS1".
  110. ↑ The Rust Reference §6.1.3.1
  111. ↑ An Overview of the Scala Programming Language
  112. ↑ Scala Language Specification
  113. ↑ Script error: No such module "citation/CS1".
  114. ↑ Script error: No such module "citation/CS1".
  115. ↑ Notes for Programming Language Experts, Wolfram Language Documentation.
  116. ↑ External Programs, Wolfram Language Documentation.

Script error: No such module "Check for unknown parameters".

References

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

Template:Programming paradigms navbox Script error: No such module "Navbox".