Programming Paradigms Roadmap¶
"A language that doesn't affect the way you think about programming is not worth knowing." — Alan Perlis
A paradigm is a way of structuring computation and of thinking about programs — what the basic building blocks are (objects? functions? rules? streams?), how state is handled, and how control flows. This roadmap is the map of that space: the major paradigms, what problem each was invented to solve, and how to combine them in real code.
The two largest paradigms have their own dedicated roadmaps: - Object-Oriented Programming → object-oriented-programming/ - Functional Programming → code-craft/functional-programming/
This roadmap covers everything around and between them — plus the overview that ties all paradigms together.
Why a Dedicated Roadmap¶
Most engineers learn one paradigm (usually OOP) by osmosis and never see the others clearly. But the paradigm you reach for shapes every design decision you make. Knowing the full menu — and the trade-offs — is what lets you pick reactive for a UI stream, data-oriented for a hot loop, declarative for a config language, and actors for a distributed system, instead of forcing everything into the one shape you happen to know.
| Roadmap | Question it answers |
|---|---|
| Object-Oriented Programming | How do I model with objects, messages, and responsibilities? |
| Functional Programming | How do I compute by transforming values instead of mutating state? |
| Programming Paradigms (this) | What are all the ways to structure a program, and when does each win? |
Sections¶
| # | Paradigm | Core idea |
|---|---|---|
| 01 | Overview & Taxonomy | The imperative ↔ declarative spectrum; how paradigms relate and overlap |
| 02 | Imperative & Procedural | Statements, sequence, procedures; the substrate most others compile down to |
| 03 | Declarative Programming | Describe what, not how — SQL, config, build systems, constraint solvers |
| 04 | Logic Programming | Facts, rules, and unification — Prolog, Datalog, rule engines |
| 05 | Reactive Programming | Values that change over time — observables, streams, backpressure (Rx) |
| 06 | Dataflow & Stream | Computation as a graph of data dependencies; pipelines, FBP |
| 07 | Actor Model & CSP | Concurrency as isolated processes exchanging messages — Erlang, Akka, Go channels |
| 08 | Generic Programming | Algorithms parameterized over types — templates, concepts, traits |
| 09 | Aspect-Oriented Programming | Cross-cutting concerns (logging, security) woven separately from core logic |
| 10 | Data-Oriented Programming | Design around data layout and transformation — ECS, cache-friendly, DOP |
| 11 | Event-Driven Programming | Control flow driven by events and handlers; callbacks, the event loop |
| 12 | Array-Oriented Programming | Whole-array/vectorized operations — APL, J, NumPy, dataframes |
| 13 | Constraint Programming | Declare constraints, let a solver find solutions — CLP, SAT/SMT, schedulers |
| 14 | Probabilistic Programming | Programs as probability distributions — Bayesian inference, PPLs (Stan, Pyro) |
| 15 | Symbolic Programming | Code as data, homoiconicity, term rewriting — Lisp tradition, CAS |
| 16 | Concatenative & Stack-Based | Composition by juxtaposition over an implicit stack — Forth, Factor, PostScript |
| 17 | Multiparadigm in Practice | How real languages (Rust, Scala, Kotlin, Python, C++) blend paradigms |
Scope & Deduplication¶
This roadmap stays at the paradigm / way-of-thinking level and cross-links to where the mechanics live:
| Looks similar to | But here we cover | The mechanics live in |
|---|---|---|
07-actor-model-and-csp | actors/CSP as a way to structure concurrency | Language Internals → Concurrency |
05-reactive-programming | reactive as a paradigm (observables, backpressure) | FP → Laziness & Streams, System Design → Data Streaming |
08-generic-programming | generic programming as a style | Language Internals → Type Systems |
03-declarative-programming | the declarative mindset | SQL, build tools, IaC roadmaps |
| OOP / FP | — (each is its own roadmap) | OOP, FP |
Status¶
Skeleton — topic folders are scaffolded; content is written per topic following the Code Craft file convention. All content in English.