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.

  • 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 c.f. 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

See also

Notes

  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. ^ multiple dispatch, not traditional single
  19. ^ Akka Archived 2013-01-19 at the Wayback Machine

Citations

  1. ^ Bragg, S.D.; Driskill, C.G. (20–22 September 1994). "Diagrammatic-graphical programming languages and DoD-STD-2167A". Proceedings of AUTOTESTCON '94 (IEEEXplore). Institute of Electrical and Electronics Engineers (IEEE). pp. 211–220. doi:10.1109/AUTEST.1994.381508. ISBN 978-0-7803-1910-3. S2CID 62509261.
  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" (PDF). Archived from the original (PDF) on 2019-08-19. Retrieved 2019-09-15.
  15. ^ OpenMPI
  16. ^ Boost.MPI
  17. ^ Boost.MPL
  18. ^ LC++
  19. ^ Castor Archived 2013-01-25 at the Wayback Machine
  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. ^ "Light Table". 2019-04-08.
  30. ^ Multimethods and Hierarchies
  31. ^ Agents and Asynchronous Actions
  32. ^ "concurrency". CLiki.
  33. ^ [1] constraint programming inside CL through extensions
  34. ^ [2] dataflow extension
  35. ^ [3] by creating DSLs using the built-in metaprogramming; also see note on functional, constraint and logic paradigms, which are part of declarative
  36. ^ [4] MPI, etc via language extensions
  37. ^ template metaprogramming using macros (see C++)
  38. ^ [5] [6] [7] Prolog implemented as a language extension
  39. ^ Common Lisp Object System see Wikipedia article on CLOS, the Common Lisp Object System.
  40. ^ implemented by the user via a short macro, example of implementation
  41. ^ - Visual programming tool based on Common Lisp
  42. ^ [8] rule-based programming extension
  43. ^ [9] Archived 2018-04-26 at the Wayback Machine through the Meta Object Protocol
  44. ^ D Language Feature Table
  45. ^ Phobos std.algorithm
  46. ^ D language String Mixins
  47. ^ The Little JavaScripter demonstrates fundamental commonality with Scheme, a functional language.
  48. ^ Object-Oriented Programming in JavaScript Archived 2019-02-10 at the Wayback Machine gives an overview of object-oriented programming techniques in JavaScript.
  49. ^ "React – A JavaScript library for building user interfaces". 2019-04-08.
  50. ^ "TNG-Hooks". GitHub. 2019-04-08.
  51. ^ "Lodash documentation". 2019-04-08.
  52. ^ "mori". 2019-04-08.
  53. ^ "Light Table". 2019-04-08.
  54. ^ "TNG-Hooks". GitHub. 2019-04-08.
  55. ^ "Prolog embedding". Haskell.org.
  56. ^ "Functional Reactive Programming". HaskellWiki.
  57. ^ Cloud Haskell
  58. ^ "Template Haskell". HaskellWiki.
  59. ^ "Logict: A backtracking logic-programming monad". Haskell.org.
  60. ^ Kollmansberger, Steve; Erwig, Martin (30 May 2006). "Haskell Rules: Embedding Rule Systems in Haskell" (PDF). Oregon State University.
  61. ^ https://jcp.org/en/jsr/detail?id=331 JSR 331: Constraint Programming API
  62. ^ https://github.com/GoogleCloudPlatform/DataflowJavaSDK Google Cloud Platform Dataflow SDK
  63. ^ "JuliaOpt/JuMP.jl". GitHub. JuliaOpt. 11 February 2020. Retrieved 12 February 2020.
  64. ^ "GitHub - MikeInnes/DataFlow.jl". GitHub. 2019-01-15.
  65. ^ "GitHub - JuliaGizmos/Reactive.jl: Reactive programming primitives for Julia". GitHub. 2018-12-28.
  66. ^ https://github.com/davidanthoff/Query.jl Query almost anything in julia
  67. ^ https://github.com/lilinjn/LilKanren.jl A collection of Kanren implementations in Julia
  68. ^ "GitHub - abeschneider/PEGParser.jl: PEG Parser for Julia". GitHub. 2018-12-03.
  69. ^ "GitHub - gitfoxi/Parsimonious.jl: A PEG parser generator for Julia". GitHub. 2017-08-03.
  70. ^ Lazy https://github.com/MikeInnes/Lazy.jl
  71. ^ "Execute loop iterations in parallel". mathworks.com. Retrieved 21 October 2016.
  72. ^ "Write Constraints". mathworks.com. Retrieved 21 October 2016.
  73. ^ "Getting Started with SimEvents". mathworks.com. Retrieved 21 October 2016.
  74. ^ "Execute loop iterations in parallel". mathworks.com. Retrieved 21 October 2016.
  75. ^ "Execute MATLAB expression in text - MATLAB eval". mathworks.com. Retrieved 21 October 2016.
  76. ^ "Determine class of object". mathworks.com. Retrieved 21 October 2016.
  77. ^ "Class Metadata". mathworks.com. Retrieved 21 October 2016.
  78. ^ "Object-Oriented Programming". mathworks.com. Retrieved 21 October 2016.
  79. ^ "Simulink". mathworks.com. Retrieved 21 October 2016.
  80. ^ interpreter based threads
  81. ^ Higher Order Perl
  82. ^ PHP Manual, Chapter 17. Functions
  83. ^ PHP Manual, Chapter 19. Classes and Objects (PHP 5)
  84. ^ PHP Manual, Anonymous functions
  85. ^ "Parallel Processing and Multiprocessing in Python". Python Wiki. Retrieved 21 October 2016.
  86. ^ "threading — Higher-level threading interface". docs.python.org. Retrieved 21 October 2016.
  87. ^ "python-constraint". pypi.python.org. Retrieved 21 October 2016.
  88. ^ "DistributedProgramming". Python Wiki. Retrieved 21 October 2016.
  89. ^ "Chapter 9. Metaprogramming". chimera.labs.oreilly.com. Archived from the original on 23 October 2016. Retrieved 22 October 2016.
  90. ^ "Metaprogramming". readthedocs.io. Retrieved 22 October 2016.
  91. ^ "PEP 443 – Single-dispatch generic functions". python.org. Retrieved 22 October 2016.
  92. ^ "PEP 484 – Type Hints". python.org. Retrieved 22 October 2016.
  93. ^ "PyDatalog". Retrieved 22 October 2016.
  94. ^ "Light Table". 2019-04-08.
  95. ^ "Futureverse".
  96. ^ "future batchtools".
  97. ^ "Magrittr: A Forward Pipe Operator for R". cran.r-project.org\access-date=13 July 2017. 17 November 2020.
  98. ^ Racket Guide: Concurrency and Synchronization
  99. ^ The Rosette Guide
  100. ^ FrTime: A Language for Reactive Programs
  101. ^ Racket Guide: Distributed Places
  102. ^ Lazy Racket
  103. ^ Channels and other mechanisms
  104. ^ "Problem Solver module".
  105. ^ Feed operator
  106. ^ https://github.com/perl6/doc/issues/1744#issuecomment-360565196 Cro module
  107. ^ "Meta-programming: What, why and how". 2011-12-14.
  108. ^ https://perl6advent.wordpress.com/2009/12/18/day-18-roles/ Parametrized Roles
  109. ^ "Meta-object protocol (MOP)".
  110. ^ https://docs.perl6.org/language/classtut Classes and Roles
  111. ^ "The Rust macros guide". Rust. Retrieved 19 January 2015.
  112. ^ "The Rust compiler plugins guide". Rust. Retrieved 19 January 2015.
  113. ^ The Rust Reference §6.1.3.1
  114. ^ An Overview of the Scala Programming Language
  115. ^ Scala Language Specification
  116. ^ "Tcl Programming/Introduction". en.wikibooks.org. Retrieved 22 October 2016.
  117. ^ "TCLLIB - Tcl Standard Library: snitfaq". sourceforge.net. Retrieved 22 October 2016.
  118. ^ Notes for Programming Language Experts, Wolfram Language Documentation.
  119. ^ External Programs, Wolfram Language Documentation.

References

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

Read other articles:

Najib Mikatiنجيب ميقاتي Perdana Menteri Lebanon ke-23PetahanaMulai menjabat 10 September 2021PresidenMichel AounWakilSaadeh Al Shami PendahuluHassan DiabPenggantiPetahanaMasa jabatan13 Juni 2011 – 15 Februari 2014PresidenMichel SuleimanWakilSamir Mouqbel PendahuluSaad HaririPenggantiTammam SalamMasa jabatanPenjabat: 19 April 2005 – 19 Juli 2005PresidenÉmile LahoudWakilElias Murr PendahuluOmar KaramiPenggantiFouad Siniora Informasi pribadiLahir24 November 1...

 

 

ExileInformasi latar belakangNama lainEguJ Soul Brothers (1999-2001)Asal TokyoGenreJ-popTahun aktif2001–sekarang (1999-2001 sebagai J Soul Brothers)Labelrhythm zoneSitus webexile.jpAnggotaExile HiroExile MakidaiToshio Matsumoto (Matsu)Exile UsaExile AtsushiExile AkiraExile TakahiroKenchi Tachibana(Kenchi)Keiji Kuroki (Keiji)Exile TetsuyaExile NaotoNaoki Kobayashi (Naoki)Exile NesmithExile ShokichiNaoki KobayashiTakanori IwataAlan ShirahamaMandy SekiguchiSekaiTaiki SatoMantan anggotaShun Exi...

 

 

هجوم دير الزور جزء من الحرب الأهلية السورية    التاريخ وسيط property غير متوفر. بداية يناير 2017  نهاية فبراير 2017  الموقع محافظة دير الزور  35°09′N 40°16′E / 35.15°N 40.27°E / 35.15; 40.27  تعديل مصدري - تعديل     لمعانٍ أخرى، طالع هجوم دير الزور (توضيح). مدينة د...

BaoPoster filmSutradaraDomee ShiProduserBecky Neiman-CobbDitulis olehDomee ShiPenata musikToby ChuSinematograferPatrick LinIan MegibbenPenyuntingKatherine RinggoldPerusahaanproduksi Walt Disney Pictures Pixar Animation Studios DistributorWalt Disney StudiosMotion PicturesTanggal rilis 21 April 2018 (2018-04-21) (Tribeca Film Festival) 15 Juni 2018 (2018-06-15) (bersama Incredibles 2) Durasi8 menitNegaraKanadaAmerika Serikat Bao adalah film pendek animasi komputer tahun...

 

 

Kopli Ansori Bupati Lebong ke-3PetahanaMulai menjabat 26 Februari 2021PresidenJoko WidodoGubernurRohidin MersyahWakilFahrurrozi PendahuluRosjonsyah Syahili Mustarani Abidin (Plh.)PenggantiPetahana Informasi pribadiLahir30 November 1981 (umur 42)Kota Baru, BengkuluKebangsaanIndonesiaPartai politikPANSuami/istriElvi SukaisihAnak3PekerjaanPolitikusSunting kotak info • L • B Kopli Ansori (lahir 30 November 1981) adalah Bupati Lebong periode 2021–2024. Ia menjabat seja...

 

 

Voce principale: Aurora Pro Patria 1919. Pro Patria et Libertate Sezione CalcioStagione 1952-1953Sport calcio Squadra Pro Patria Allenatore Cesare Pellegatta Serie A18º posto, retrocessa Maggiori presenzeCampionato: Uboldi (34) Miglior marcatoreCampionato: Bertoloni (13) 1951-1952 1953-1954 Si invita a seguire il modello di voce Questa voce raccoglie le informazioni riguardanti la Pro Patria et Libertate Sezione Calcio nelle competizioni ufficiali della stagione 1952-1953. Indice 1 Sta...

Silvia Soler Espinosa Silvia Soler Espinosa nel 2018 Nazionalità  Spagna Altezza 169 cm Peso 61 kg Tennis Termine carriera 2020[1] Carriera Singolare1 Vittorie/sconfitte 328 - 300 Titoli vinti 0 WTA - 5 ITF Miglior ranking 54º (21 maggio 2012) Risultati nei tornei del Grande Slam  Australian Open 2T (2015)  Roland Garros 3T (2014)  Wimbledon 2T (2012, 2013, 2014, 2015)  US Open 3T (2011, 2012) Altri tornei  Giochi olimpici 1T (2012) Doppio1 Vittorie/sc...

 

 

Pour les articles homonymes, voir Malot. Hector MalotPortrait photographique d’Hector Malot par Nadar vers 1880.BiographieNaissance 20 mai 1830La BouilleDécès 18 juillet 1907 (à 77 ans)Avenue de la Dame-Blanche (Fontenay-sous-Bois)Sépulture Cimetière de Fontenay-sous-BoisNom de naissance Hector-Henri MalotSurnom Malot-la-ProbitéNationalité françaiseFormation Lycée Pierre-Corneille (1842-1847)Lycée Condorcet (1847-1849)Faculté de droit de Paris (1850-1853)Activités Romancie...

 

 

Irish Catholic philosopher and theologian (c. 800 – c. 877) Eriugena redirects here. For other uses, see Eriugena (disambiguation). Not to be confused with John Duns Scotus. This article contains too many or overly lengthy quotations. Please help summarize the quotations. Consider transferring direct quotations to Wikiquote or excerpts to Wikisource. (October 2023) John Scotus EriugenaStained glass window in the chapel of Emmanuel College, Cambridge. Depicted as an early Benedictine monk, h...

Wars involving Georgia This article may require cleanup to meet Wikipedia's quality standards. The specific problem is: Massive amount of content that does not meet article inclusion criteria, This is a list of wars involving Georgia and its predecessor states. Please help improve this article if you can. (November 2023) (Learn how and when to remove this message) Part of a series on theHistory of Georgia Prehistoric Georgia Shulaveri–Shomu cultureKura–Araxes cultureLegend of KartlosTrial...

 

 

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (يوليو 2019) هذه المقالة تحتاج للمزيد من الوصلات للمقالات الأخرى للمساعدة في ترابط مقالات الموسوعة. فضلًا ساعد في تحسي...

 

 

Miroslav VolfLahirSeptember 25, 1956Osijek, CroatiaPekerjaanTeologKarya terkenalAllah: A Christian ResponseAfter Our LikenessExclusion and EmbraceThe End of MemoryFree of ChargeKiprah di bidang teologiTradisi atau gerakanAnglicanismSocial TrinitarianismMinat utamaTeologi SistematikaPolitikKomunitasEklesiologiDialog Antar-imanGlobalization Miroslav Volf (lahir pada 25 September, 1956) adalah seorang Teolog Kristen Protestan dari Kroasia dan ilmuwanyang sering disebut sebagai teolog terpuji ma...

Christian monk and Saint For others known as Saint Anthony, see Saint Anthony (disambiguation). SaintAnthony of KievSt. Anthony of Kiev, co-founder of the Kyiv Pechersk Lavra.Venerable Father, Anthony of the CavesBornc. 983Liubech, Chernigov PrincipalityDiedc. 1073 (aged 90)KievVenerated inEastern Orthodox ChurchRoman Catholic ChurchMajor shrineSvensky MonasteryFeast10/23 July (Eastern Orthodox and Eastern Catholic), 7 May (Roman Catholic)AttributesClothed as a monk in monastic habit, so...

 

 

Month of 1965 1965 January February March April May June July August September October November December << January 1965 >> Su Mo Tu We Th Fr Sa 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31   January 24, 1965: Sir Winston Churchill, former UK prime minister, dies aged 90 January 20, 1965: U.S. President Johnson inaugurated in Washington January 6, 1965: F-111, first plane with folding wings, takes flight January 6, 1965: Milan C...

 

 

500 mi (800 km) generally north-to-south ridgeline Sierra CrestView of Sierra Crest near Mount Abbot and Mount MillsHighest pointPeakMount WhitneyElevation14,505 ft (4,421 m)NAVD88DimensionsLength500 mi (800 km)GeographyLocationCalifornia, United States The Sierra Crest is a roughly 500 mi (800 km) generally north-to-south ridgeline that demarcates the broad west and narrow east slopes of the Sierra Nevada and that extends as far east as the Sierra's topogra...

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: East Calder – news · newspapers · books · scholar · JSTOR (December 2020) (Learn how and when to remove this message) Human settlement in ScotlandEast CalderThe remains of St Cuthbert's Kirk, a 16th-century church, abandoned in 1750East CalderLocation within We...

 

 

American philosopher (1927–2021) Edmund GettierBornEdmund Lee Gettier IIIOctober 31, 1927 (1927-10-31)Baltimore, Maryland, U.S.DiedMarch 23, 2021(2021-03-23) (aged 93)EraContemporary philosophyRegionWestern philosophySchoolAnalytic philosophyDoctoral advisorNorman MalcolmMain interestsEpistemologyNotable ideasGettier problem Edmund Lee Gettier III (/ˈɡɛtiər/; October 31, 1927 – March 23, 2021) was an American philosopher at the University of Massachusetts Amherst. He is best...

 

 

Disambiguazione – Se stai cercando altri significati, vedi Sedia elettrica (disambigua). Fotografia della prima sedia elettrica, utilizzata nel 1890 per giustiziare William Kemmler La sedia elettrica è uno strumento utilizzato in vari stati per uccidere i condannati a morte. Inventata da Thomas Edison, fu introdotta negli Stati Uniti nel 1888. La sedia è costruita in materiale non conduttore, solitamente legno, quindi non è la struttura della sedia chiamata appunto elettrica a condurvi ...

Bruce Langhorne Nazionalità Stati Uniti GenereFolk rock Periodo di attività musicale1963 – 2017 Strumentochitarra, tastiera, percussioni, violino, sitar GruppiThe Folk Singers Of Washington Square Album pubblicati2 Studio2 Live0 Raccolte0 Modifica dati su Wikidata · Manuale Bruce Langhorne (Tallahassee, 11 maggio 1938 – Los Angeles, 14 aprile 2017[1]) è stato un chitarrista e polistrumentista statunitense celebre per la sua collaborazione con Gordo...

 

 

Range of usable frequencies This article is about the concept in signal theory and processing measured in hertz. For use in computing and networking expressed in bits per second, see Bandwidth (computing). For other uses, see Bandwidth (disambiguation). Amplitude (a) vs. frequency (f) graph illustrating baseband bandwidth. Here the bandwidth equals the upper frequency. Bandwidth is the difference between the upper and lower frequencies in a continuous band of frequencies. It is typically meas...