Showing content from http://wikipedia.org/wiki/Comparison_of_multi-paradigm_programming_languages below:
Comparison of multi-paradigm programming languages
From Wikipedia, the free encyclopedia
Programming languages can be grouped by the number and types of paradigms supported.
Paradigm summaries[edit]
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]
- ^ 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.
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 9: Tasks and Synchronization
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3 Annex E: Distributed Systems
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 12: Generic Units
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 6: Subprograms
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, 3.9 Tagged Types and Type Extensions
- ^ Thread support
- ^ Atomics support
- ^ Memory model
- ^ Gecode
- ^ SystemC
- ^ Boost.Iostreams
- ^ Boolinq
- ^ "AraRat" (PDF). Archived from the original (PDF) on 2019-08-19. Retrieved 2019-09-15.
- ^ OpenMPI
- ^ Boost.MPI
- ^ Boost.MPL
- ^ LC++
- ^ Castor Archived 2013-01-25 at the Wayback Machine
- ^ Reflect Library
- ^ N3534
- ^ Boost.Spirit
- ^ Clojure - Concurrent Programming
- ^ Clojure - core.async
- ^ Clojure - Functional Programming
- ^ Clojure - Macros
- ^ Clojure - core.logic
- ^ Clojure - Threading Macros Guide
- ^ Multimethods and Hierarchies
- ^ Agents and Asynchronous Actions
- ^ "concurrency". CLiki.
- ^ [1] constraint programming inside CL through extensions
- ^ [2] dataflow extension
- ^ [3] by creating DSLs using the built-in metaprogramming; also see note on functional, constraint and logic paradigms, which are part of declarative
- ^ [4] MPI, etc via language extensions
- ^ template metaprogramming using macros (see C++)
- ^ [5] [6] [7] Prolog implemented as a language extension
- ^ Common Lisp Object System see Wikipedia article on CLOS, the Common Lisp Object System.
- ^ implemented by the user via a short macro, example of implementation
- ^ - Visual programming tool based on Common Lisp
- ^ [8] rule-based programming extension
- ^ [9] Archived 2018-04-26 at the Wayback Machine through the Meta Object Protocol
- ^ D Language Feature Table
- ^ Phobos std.algorithm
- ^ D language String Mixins
- ^ The Little JavaScripter demonstrates fundamental commonality with Scheme, a functional language.
- ^ Object-Oriented Programming in JavaScript Archived 2019-02-10 at the Wayback Machine gives an overview of object-oriented programming techniques in JavaScript.
- ^ "React – A JavaScript library for building user interfaces". 2019-04-08.
- ^ "TNG-Hooks". GitHub. 2019-04-08.
- ^ "Lodash documentation". 2019-04-08.
- ^ "mori". 2019-04-08.
- ^ "TNG-Hooks". GitHub. 2019-04-08.
- ^ "Prolog embedding". Haskell.org.
- ^ "Functional Reactive Programming". HaskellWiki.
- ^ Cloud Haskell
- ^ "Template Haskell". HaskellWiki.
- ^ "Logict: A backtracking logic-programming monad". Haskell.org.
- ^ Kollmansberger, Steve; Erwig, Martin (30 May 2006). "Haskell Rules: Embedding Rule Systems in Haskell" (PDF). Oregon State University.
- ^ https://jcp.org/en/jsr/detail?id=331 JSR 331: Constraint Programming API
- ^ https://github.com/GoogleCloudPlatform/DataflowJavaSDK Google Cloud Platform Dataflow SDK
- ^ "JuliaOpt/JuMP.jl". GitHub. JuliaOpt. 11 February 2020. Retrieved 12 February 2020.
- ^ "GitHub - MikeInnes/DataFlow.jl". GitHub. 2019-01-15.
- ^ "GitHub - JuliaGizmos/Reactive.jl: Reactive programming primitives for Julia". GitHub. 2018-12-28.
- ^ https://github.com/davidanthoff/Query.jl Query almost anything in julia
- ^ https://github.com/lilinjn/LilKanren.jl A collection of Kanren implementations in Julia
- ^ "GitHub - abeschneider/PEGParser.jl: PEG Parser for Julia". GitHub. 2018-12-03.
- ^ "GitHub - gitfoxi/Parsimonious.jl: A PEG parser generator for Julia". GitHub. 2017-08-03.
- ^ Lazy https://github.com/MikeInnes/Lazy.jl
- ^ "Execute loop iterations in parallel". mathworks.com. Retrieved 21 October 2016.
- ^ "Write Constraints". mathworks.com. Retrieved 21 October 2016.
- ^ "Getting Started with SimEvents". mathworks.com. Retrieved 21 October 2016.
- ^ "Execute loop iterations in parallel". mathworks.com. Retrieved 21 October 2016.
- ^ "Execute MATLAB expression in text - MATLAB eval". mathworks.com. Retrieved 21 October 2016.
- ^ "Determine class of object". mathworks.com. Retrieved 21 October 2016.
- ^ "Class Metadata". mathworks.com. Retrieved 21 October 2016.
- ^ "Object-Oriented Programming". mathworks.com. Retrieved 21 October 2016.
- ^ "Simulink". mathworks.com. Retrieved 21 October 2016.
- ^ interpreter based threads
- ^ Higher Order Perl
- ^ PHP Manual, Chapter 17. Functions
- ^ PHP Manual, Chapter 19. Classes and Objects (PHP 5)
- ^ PHP Manual, Anonymous functions
- ^ "Parallel Processing and Multiprocessing in Python". Python Wiki. Retrieved 21 October 2016.
- ^ "threading — Higher-level threading interface". docs.python.org. Retrieved 21 October 2016.
- ^ "python-constraint". pypi.python.org. Retrieved 21 October 2016.
- ^ "DistributedProgramming". Python Wiki. Retrieved 21 October 2016.
- ^ "Chapter 9. Metaprogramming". chimera.labs.oreilly.com. Archived from the original on 23 October 2016. Retrieved 22 October 2016.
- ^ "Metaprogramming". readthedocs.io. Retrieved 22 October 2016.
- ^ "PEP 443 – Single-dispatch generic functions". python.org. Retrieved 22 October 2016.
- ^ "PEP 484 – Type Hints". python.org. Retrieved 22 October 2016.
- ^ "PyDatalog". Retrieved 22 October 2016.
- ^ "Futureverse".
- ^ "future batchtools".
- ^ "Magrittr: A Forward Pipe Operator for R". cran.r-project.org\access-date=13 July 2017. 17 November 2020.
- ^ Racket Guide: Concurrency and Synchronization
- ^ The Rosette Guide
- ^ FrTime: A Language for Reactive Programs
- ^ Racket Guide: Distributed Places
- ^ Lazy Racket
- ^ Channels and other mechanisms
- ^ "Problem Solver module".
- ^ Feed operator
- ^ https://github.com/perl6/doc/issues/1744#issuecomment-360565196 Cro module
- ^ "Meta-programming: What, why and how". 2011-12-14.
- ^ https://perl6advent.wordpress.com/2009/12/18/day-18-roles/ Parametrized Roles
- ^ "Meta-object protocol (MOP)".
- ^ https://docs.perl6.org/language/classtut Classes and Roles
- ^ "The Rust macros guide". Rust. Retrieved 19 January 2015.
- ^ "The Rust compiler plugins guide". Rust. Retrieved 19 January 2015.
- ^ The Rust Reference §6.1.3.1
- ^ An Overview of the Scala Programming Language
- ^ Scala Language Specification
- ^ "Tcl Programming/Introduction". en.wikibooks.org. Retrieved 22 October 2016.
- ^ "TCLLIB - Tcl Standard Library: snitfaq". sourceforge.net. Retrieved 22 October 2016.
- ^ Notes for Programming Language Experts, Wolfram Language Documentation.
- ^ External Programs, Wolfram Language Documentation.
- Jim Coplien, Multiparadigm Design for C++, Addison-Wesley Professional, 1998.
Programming paradigms
(
Comparison by language
)
Imperative Structured
Object-oriented
(comparison, list)
Declarative Functional
(comparison)
Dataflow
Logic
DSL
Concurrent,
distributed,
parallel
Metaprogramming
Separation
of concerns
RetroSearch is an open source project built by @garambo
| Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.3