Programming Languages
How we tell computers what to do — syntax, semantics, type systems, compilers, and interpreters.
Programming languages are the user interface of computation. This section covers paradigms, type systems, runtimes, and how compilers and interpreters turn human-readable code into machine behaviour.
Core
The essentials. Start here.-
Programming Language
A formal language for instructing computers — the human side of software.
core beginner concept -
Compiler
A program that translates source code in one language into another — usually a high-level language into machine code or an intermediate form.
core intermediate tool -
Garbage Collection
Automatic memory management — the runtime tracks which allocated objects are still in use and frees the rest, so programmers don't have to.
core intermediate concept -
Interpreter
A program that reads source code (or bytecode) and executes it directly, without first producing a standalone binary.
core intermediate tool -
Type System
A set of rules a programming language uses to assign and check the "kinds" of values, catching whole classes of bugs before the program runs.
core intermediate concept
Important
What you'll meet next.-
JavaScript
A dynamically typed, multi-paradigm language created for the browser, now the most-deployed runtime on Earth — browsers, Node.js, Deno, Bun, and edge platforms.
beginner language -
Python
A general-purpose, dynamically typed, interpreted programming language known for readable syntax and a vast ecosystem.
beginner language -
C
A compact, portable systems programming language designed in the early 1970s — the implementation language of Unix and, to this day, of most operating systems, compilers, and infrastructure.
intermediate language -
Go
A small, garbage-collected, compiled language with first-class concurrency, designed at Google for building reliable network services.
intermediate language -
Java
A statically typed, object-oriented language that compiles to bytecode and runs on the JVM — "write once, run anywhere" — long dominant in enterprise backends and Android.
intermediate language -
Memory Management
How a running program acquires and releases memory — the stack and the heap, allocation and freeing, and the strategies (manual, GC, ownership) that prevent leaks and corruption.
intermediate concept -
Parsing
Turning a stream of characters into a structured tree a program can analyse — the front-end of every compiler, query engine, and data format.
intermediate concept -
Rust
A modern systems language with C-like performance, no garbage collector, and a borrow checker that guarantees memory safety at compile time.
intermediate language -
Syntax vs Semantics
Syntax is the grammar — which arrangements of symbols are legal; semantics is the meaning — what a legal program actually does when it runs.
intermediate concept
Supplemental
Niche, historical, or specialized.-
Closure
A function that captures variables from its enclosing scope — carrying its environment with it so it can access those variables even after the outer function has returned.
supplemental intermediate concept -
Erlang
A functional language designed by Ericsson for fault-tolerant, distributed telephony systems — pioneering lightweight processes, message passing, and "let it crash" fault tolerance, now foundational to Elixir and modern distributed systems.
supplemental intermediate technology -
Lisp
The second oldest high-level programming language (1958) — pioneering garbage collection, dynamic typing, the REPL, and code-as-data (homoiconicity), influencing virtually every programming language that followed.
supplemental intermediate technology -
Pointer and Reference
A value that stores the memory address of another value — the fundamental mechanism for indirection, dynamic memory, linked data structures, and passing large objects efficiently.
supplemental intermediate concept -
Smalltalk
The language that invented modern object-oriented programming — Alan Kay's vision of objects communicating purely via message passing, pioneering the GUI, the REPL, live programming environments, and the MVC pattern.
supplemental intermediate technology -
Continuation
A representation of "the rest of the computation" as a first-class value — enabling full control over control flow, the basis for implementing coroutines, generators, exceptions, and async/await at the language level.
supplemental advanced concept -
Forth
A minimal, stack-based language where programs are defined as sequences of words (functions) that manipulate a data stack — notable for extreme simplicity, extensibility, and its influence on stack-based virtual machines.
supplemental advanced technology -
Haskell
A purely functional, lazily evaluated language with a powerful type system — notable for making side effects explicit in types, pioneering type classes, and influencing the design of Rust, Scala, Swift, and Kotlin.
supplemental advanced technology -
Homoiconicity
A language property where code and data share the same representation — allowing programs to treat code as data structures, manipulate it programmatically, and generate new code at compile time through macros.
supplemental advanced concept