Programming Languages Timeline
Languages by paradigm and year of first appearance. Click any marker to see a code example, runtime, and concurrency model.
Bands run from imperativeat the bottom to declarativeat the top. Note these are two different axes: "imperative vs. declarative" is about how you instruct the machine, whileprocedural,object-oriented andfunctional are about how you structure code. So imperative splits into procedural and object-oriented, while functional sits on the declarative side. Each language sits in the family it was born into (a few are multi-paradigm today).
- Procedural: Step-by-step, no objects (C, Fortran)
- Object-oriented: State bundled into objects (Java, Smalltalk)
- Multi-paradigm: Mixes styles freely (Python, Rust, Go)
- Functional (impure): Functions first, effects allowed (Lisp, OCaml)
- Functional (pure): Functions first, effects tracked (Haskell)
- Logic / relational: Describe facts & rules (Prolog)
- Dependently typed: Proofs as types (Coq, Lean)
Bold names are still significantly used today (roughly 5%+ of developers in the2025 Stack Overflow Developer Survey).