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: