Programming Paradigms
A programming paradigm is a style of programming, a way of thinking about software construction based on some fundamental, defining principles. There are several programming paradigms, each with its own strengths and weaknesses. The term programming paradigm may also be used to refer to a single programming language
Common Programming paradigms:
Imperative: in which the programmer instructs the machine how to change its state
Procedural Programming: which groups instructions into procedures
- Languages: C, Pascal, Fortran, COBOL, ALGOL, PL/I, Ada, Modula-2, Oberon, Oberon-2, Component Pascal, Object Pascal, Turbo Pascal, Delphi, Free Pascal, Visual
Object-Oriented Programming: which groups instructions with the part of the state they operate on
- Languages: Java, C++, C#, Python, Ruby, Swift, Objective-C, Kotlin, Scala, PHP, JavaScript, TypeScript, Dart, Visual Basic, Delphi, Eiffel, Smalltalk, Simula, Self, Newspeak, ABAP, Ada, COBOL, Fortran, RPG, PL/I, Object Pascal, Clarion, ColdFusion, PowerBuilder, Progress, Realbasic, Real Studio, Visual FoxPro, Visual DataFlex, Visual Objects, Xojo
Declarative: in which the programmer merely declares properties of the desired result, but not how to compute it
Functional Programming: in which the desired result is declared as the value of a series of function applications
- Languages: Haskell, Lisp, Scheme, ML, Scala, Clojure, F#, Erlang, Elixir, Elm, OCaml, Racket, PureScript, Idris, Agda, Coq, ReasonML
Logic: in which the desired result is declared as the answer to a question about a system of facts and rules
- Languages: Prolog
Mathematical: in which the desired result is declared as the solution of an optimization problem
Reactive: in which the desired result is declared with data streams and the propagation of change