Skip to main content

Programming Languages

Notes on programming languages, organized by language family from low-level systems work up to applied / data-oriented use.

Languages

  1. C — the systems language; types, pointers, memory, and the C standard library
  2. C++ — objects, templates, the STL, and modern C++ idioms (populated from Walter Savitch, Absolute C++)
  3. Rust — ownership, borrowing, lifetimes, and safe systems programming
  4. Java — the JVM, classes, collections, and concurrency
  5. Python — dynamic typing, idioms, the standard library, and the scientific stack
  6. 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.