Programming languages
There are study paths for three languages: Go, Rust and JavaScript. Each one has a long overview page, about twenty short pages on the language itself, from a first program to testing, and pages on how its runtime works. 96 pages in all.
The other Codex paths, such as databases and networking, cover the subjects you will use a language for. These pages are for when the language itself is what you need to learn.
Go
20 pages on the language, 13 on the runtime
A small language with goroutines and channels built in, and a runtime that schedules them across threads and collects garbage with short pauses.
Backend services and infrastructure tools. Kubernetes, etcd and Docker are written in Go.
Rust
20 pages on the language, 11 on the runtime
Memory safety without a garbage collector: ownership and borrowing are checked when the program compiles, which rules out use-after-free bugs and data races in safe code.
Systems code where memory use and latency matter, such as Cloudflare’s Pingora proxy and parts of Firefox and the Linux kernel.
JavaScript
20 pages on the language, 3 on the runtime
Closures, prototypes, promises and async/await, and the event loop that runs them, in the browser and in Node.js, Deno and Bun.
Everything that runs in a browser, and many web servers and command-line tools through Node.js.
Useful alongside a language
- Operating systemsThreads, memory and system calls, which every runtime is built on.
- How garbage collection worksTracing, generations and why collectors pause.
- How event loops workThe model behind Node.js, and behind async runtimes such as Tokio.
- Coding problemsInterview patterns, which matter more than the language you write them in.