Skip to content

Software 3.0

andrej-karpathy's three-era frame for the history of programming:

Era Programming artifact Primary lever
Software 1.0 Explicit rules / code You write the instructions
Software 2.0 Learned weights You curate datasets + objectives and train a neural net
Software 3.0 Prompts / context You write context for a general-purpose LLM "interpreter"

Key claim

In Software 3.0, the context window is the program. The LLM is a general interpreter; your job is arranging context so that interpreter computes the thing you want. This is why vibe-coding and agentic-engineering are coherent disciplines in a way they wouldn't have been in 1.0 or 2.0 — the artifact is the prompt.

Consequence 1: net-new programs become possible

Karpathy's example: LLM knowledge bases (see llm-knowledge-bases). Recompiling a pile of documents into a navigable wiki on demand is not something 1.0 code could do — there was no code to write. Software 3.0 unlocks categories of software that couldn't previously exist, not just faster versions of what did.

Consequence 2: neural-native computers

Extrapolating further, Karpathy floats a speculative frontier: "completely neural computers" where a device takes raw video/audio, and a diffusion model renders a unique UI for the moment. In that world the neural net is the host process and CPUs are co-processors — a flip of the current virtualization.

Analogy he draws: 1950s–60s it was unclear whether computers would look like calculators or neural nets. We chose the calculator branch. Software 3.0 may be the re-opening of the other branch.