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.