Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Programming paradigm
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|High-level computer programming conceptualization}} {{About|classification of programming languages|definition of the term "programming model"|Programming model}} A '''programming paradigm''' is a relatively high-level way to conceptualize and structure the implementation of a [[computer program]]. A [[programming language]] can be classified as supporting one or more paradigms.<ref>{{cite web |title=Multi-Paradigm Programming Language |url=https://developer.mozilla.org/en-US/docs/multiparadigmlanguage.html |website=Mozilla Developer Network |date= Jun 21, 2013 |publisher=[[Mozilla Foundation]] |archive-url=https://web.archive.org/web/20130821052407/https://developer.mozilla.org/en-US/docs/multiparadigmlanguage.html |archive-date=21 August 2013}}</ref> Paradigms are separated along and described by different dimensions of programming. Some paradigms are about implications of the [[execution model]], such as allowing [[Side effect (computer science)|side effects]], or whether the sequence of operations is defined by the execution model. Other paradigms are about the way code is organized, such as grouping into units that include both state and behavior. Yet others are about [[Syntax (programming languages)|syntax]] and [[Formal grammar|grammar]]. Some common programming paradigms include (shown in [[hierarchical relationship]]):<ref>NΓΈrmark, Kurt. ''[http://people.cs.aau.dk/~normark/prog3-03/html/notes/paradigms_themes-paradigm-overview-section.html Overview of the four main programming paradigms]''. Aalborg University, 9 May 2011. Retrieved 22 September 2012.</ref><ref>{{cite web |author=Frans Coenen |date=1999-10-11 |title=Characteristics of declarative programming languages |url=http://cgi.csc.liv.ac.uk/~frans/OldLectures/2CS24/declarative.html#detail |url-status=live |access-date=2014-02-20 |website=cgi.csc.liv.ac.uk |language=en-US|archive-date=2014-02-27|archive-url=https://web.archive.org/web/20140227142223/http://cgi.csc.liv.ac.uk/~frans/OldLectures/2CS24/declarative.html}}</ref><ref name="symbolic-programming-lisp">{{cite web |url = http://www.ai.uga.edu/mc/LispNotes/FirstLectureOnSymbolicProgramming.pdf |title = CSCI/ARTI 4540/6540: First Lecture on Symbolic Programming and LISP |date = 2010-08-23 |access-date = 2013-11-20 |author = Michael A. Covington |publisher = University of Georgia |archive-url = https://web.archive.org/web/20120307124013/http://www.ai.uga.edu/mc/LispNotes/FirstLectureOnSymbolicProgramming.pdf |archive-date = 2012-03-07 |url-status = dead }}</ref> * [[imperative programming|Imperative]] {{endash}} code directly controls [[Control flow|execution flow]] and state change, explicit statements that change a program state ** [[procedural programming|procedural]] {{endash}} organized as [[function (computer programming)|procedures]] that call each other ** [[object-oriented programming|object-oriented]] {{endash}} organized as [[Object (computer science)|objects]] that contain both data structure and associated behavior, uses data structures consisting of data fields and methods together with their interactions (objects) to design programs *** [[Class (computer programming)|Class-based]] β object-oriented programming in which inheritance is achieved by defining classes of objects, versus the objects themselves *** [[Prototype-based programming|Prototype-based]] β object-oriented programming that avoids classes and implements inheritance via cloning of instances * [[declarative programming|Declarative]] {{endash}} code declares properties of the desired result, but not how to compute it, describes what computation should perform, without specifying detailed state changes ** [[functional programming|functional]] {{endash}} a desired result is declared as the value of a series of function evaluations, uses evaluation of mathematical functions and avoids state and mutable data ** [[logic programming|logic]] {{endash}} a desired result is declared as the answer to a question about a system of facts and rules, uses explicit mathematical logic for programming ** [[Reactive programming|reactive]] {{endash}} a desired result is declared with data streams and the propagation of change *[[Concurrent programming language|Concurrent programming]] β has language constructs for concurrency, these may involve multi-threading, support for distributed computing, message passing, shared resources (including shared memory), or [[Futures and promises|futures]] **[[Actor model|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|Dataflow programming]] β forced recalculation of formulas when data values change (e.g. [[Spreadsheet|spreadsheets]]) *[[Distributed computing|Distributed programming]] β has support for multiple autonomous computers that communicate via computer networks *[[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 *[[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 *[[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 language|Visual programming]] β manipulating program elements graphically rather than by specifying them textually (e.g. [[Simulink]]); also termed ''diagrammatic programming' *[[Online presence management]] is distinct from [[Web presence management]] in that the former is generally a marketing and messaging discipline while the latter is [[Governance,risk management, and compliance]] operational and security discipline.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)