Skip to content
Search

Programming Paradigms

lastmod 2026-03-02created 2014-01-1120 edits

Detailed list of programming paradigms

  • Action
  • Agent-oriented
  • Array-oriented
  • Automata-based
  • Concurrent computing
    • Relativistic programming
  • Data-driven
  • Declarative (contrast: Imperative)
    • Constraint
      • Constraint logic
        • Concurrent constraint logic
    • Dataflow
      • Flow-based
      • Cell-oriented (spreadsheets)
      • Reactive
    • Functional
      • Functional logic
      • Purely functional
    • Logic
      • Abductive logic
      • Answer set
      • Concurrent logic
      • Functional logic
      • Inductive logic
  • Dynamic
  • End-user programming
  • Event-driven
    • Service-oriented
    • Time-driven
  • Expression-oriented
  • Feature-oriented
  • Function-level (contrast: Value-level)
  • Generic
  • Imperative (contrast: Declarative)
    • Literate
    • Procedural
  • Inductive programming
  • Language-oriented
    • Natural language programming
    • Discipline-specific
    • Domain-specific
    • Grammar-oriented
      • Dialecting
    • Intentional
  • Metaprogramming
    • Automatic
    • Reflective
      • Attribute-oriented
    • Homoiconic
    • Template
      • Policy-based
  • Non-structured (contrast: Structured)
    • Array
  • Nondeterministic
  • Parallel computing
    • Process-oriented
  • Point-free style
    • Concatenative
  • Semantic
  • Structured (contrast: Non-structured)
    • Block-structured
    • Modular (contrast: Monolithic)
    • Object-oriented
      • Actor-based
      • Class-based
      • Concurrent
      • Prototype-based
      • By separation of concerns:
    • Recursive
  • Query
  • Value-level (contrast: Function-level)
  • Probabilistic
  • Concept

A programming paradigm is a paradigmatic style of programming. It is contrasted with a methodology, which is a paradigmatic style of doing software engineering.

A programming paradigm gives programmers a view of programming and plays a role in determining it. For example, object-oriented programming lets programmers view a program as a collection of interacting objects, whereas functional programming lets them think of it as a sequence of stateless function values.

Just as different groups in software engineering support different methodologies, different programming languages support different programming paradigms. Some languages support one particular paradigm: Smalltalk and Java support object-oriented programming, whereas Haskell and Scheme support functional programming. There are also languages that support multiple paradigms, such as Common Lisp, Python, and Oz.

Many programming paradigms are as well known for the techniques they forbid as for those they enable. For example, pure functional programming does not allow the use of side effects. Structured programming restricts the use of the GOTO statement. Partly for this reason, new paradigms are often regarded as doctrinaire or overly rigid by people accustomed to earlier ones. However, avoiding certain techniques can make it easier to prove theorems about a program's correctness, and easier to understand, without limiting the generality of the programming language.

The relationship between programming paradigms and programming languages can be complex, since a programming language may support multiple programming paradigms. For example, C++ was designed to support elements of procedural programming, object-based programming, object-oriented programming, and generic programming. In C++ you can write purely procedural programs, purely object-oriented programs, or programs that contain elements of both paradigms.

List of Programming paradigm

ETC

See also

Favorite site

References

author Zer0 sitemap