01
Programming Paradigms
- Imperative programming describes state changes.
- Object-oriented programming organizes state and behavior around objects and interfaces.
- Functional programming emphasizes expressions, immutability, and composition.
- Logic programming expresses relationships and inference rules.
- Concurrent programming coordinates independently progressing computations.
02
Type Systems
A type system constrains which operations are valid on values. Types can detect classes of errors before execution and provide information that compilers and development tools can exploit.
- Static typing performs significant checking before execution.
- Dynamic typing performs checks during execution.
- Strong typing concerns restrictions on invalid operations.
- Dependent and refinement types express more detailed program properties.
03
Compilers
- Lexical analysis converts character sequences into tokens.
- Parsing constructs a syntactic representation.
- Semantic analysis verifies program meaning and constraints.
- Intermediate representations expose structure for optimization.
- Code generation produces target-machine instructions.
- Runtime systems provide services required during execution.