Programming Languages
Notes on programming languages, organized by language family from low-level systems work up to applied / data-oriented use.
Languages
- C — the systems language; types, pointers, memory, and the C standard library
- C++ — objects, templates, the STL, and modern C++ idioms (populated from Walter Savitch, Absolute C++)
- Rust — ownership, borrowing, lifetimes, and safe systems programming
- Java — the JVM, classes, collections, and concurrency
- Python — dynamic typing, idioms, the standard library, and the scientific stack
- R — vectors, data frames, the tidyverse, and statistical visualization
Why this order
The progression goes from systems-level to applied:
- C establishes the cost model — every other language is partially explained as a layer over it.
- C++ adds abstraction (classes, templates, the STL) without giving up the cost model.
- Rust keeps the cost model but enforces memory safety statically.
- Java trades direct memory control for a managed runtime and rich libraries.
- Python trades performance for ergonomics and a vast ecosystem.
- R is specialized for statistical data analysis.
Pages within each language section have their own ordering — usually basics → types → control flow → data structures → idioms → advanced features.