Programming Paradigms

  • https://www.wikiwand.com/en/Programming_paradigm
  • Imperative: define how to do
    • Procedural
    • Object Oriented
  • Declarative: declares what to do not how to do
    • Functional
    • Reactive
    • Logic
  • Generic
  • Aspect oriented
  • MapReduce is neither imperative nor imperative

Declarative Languages

  • SQL
  • CSS
  • XPath
  • MongoDB aggregation pipeline (2.2+)
  • Cypher, SPARQL (older), Datalog (oldest)

Functional Programming

  • Apply and Compose functions
  • Functions are treated as first class citizens
    • Can be passed as argument, returned or saved to a variable
  • Examples:
    • Javascript (Web)
    • R (statistics)
    • Java (8+)

Reactive Programming

  • Uses data streams and propagation of change
  • Examples:
    • ReactiveX: RxJS, RxJava
    • Reactive Streams: Project Reactor, Vert.x

Logic Programming

  • Uses formal logic
  • Examples:
    • Prolog
    • Datalog