Imperative programming
Paradigm: describe how a program should execute, step by step. Opposite: declarative. C, Java, Python, JavaScript are primarily imperative.
Characteristic: variables change over time, control flow (if/for/while), explicit instructions. Structured programming (Dijkstra 1968) is imperative + no goto. OOP is imperative + objects. Functional programming is the opposite — focus on expressions + immutability. Modern languages are often multi-paradigm: Rust + Swift + Python support both. "Imperative shell, functional core" is a popular design pattern — keep IO/state imperative, make logic functional.