Programming Languages
- Language paradigms: imperative, object-oriented, functional, logic
- Type systems: static vs dynamic, strong vs weak, type inference, generics
- Memory management: stack vs heap, manual (C/C++), garbage collection (tracing, reference counting), ownership (Rust borrow checker)
- Compilation: lexing, parsing (ASTs), semantic analysis, code generation, LLVM
- Interpretation: bytecode VMs (JVM, CPython), JIT compilation
- Key language features: closures, pattern matching, algebraic data types, traits/interfaces
- Domain-specific languages: SQL, regex, shader languages
- Language design tradeoffs: performance vs safety vs expressiveness