programming-languages · 3 min read
Python: born in an empty office over Christmas 1989
The offices at Centrum Wiskunde & Informatica went quiet in the last days of December 1989. Guido van Rossum, thirty-three years old and working on a distributed operating system called Amoeba, found himself alone in the building with a problem he had been circling for years. He decided to solve it.
Van Rossum had good reasons for the itch. Through the early 1980s he had helped build ABC, a language developed at CWI to make programming accessible to scientists and non-programmers. ABC had genuinely elegant ideas — indentation to group statements, powerful built-in types, clean readable syntax — and one baffling limitation: it had no file input or output. Programs saved state through persistent global variables. The language was monolithic, meaning you could not add new functionality without hacking its parser. Keywords were written in capitals, which van Rossum found both ugly and exhausting. He remembered the experience clearly: “I thought, well, oh man, if we just could program ABC instead of C, each of those utilities would be like half a page of code” — but using ABC for real work was its own kind of frustration.
The language he sketched over that holiday break was, in essence, ABC with the bad parts removed. He kept the indentation. He lowercased the keywords. He added real file I/O. Most importantly, he designed a module system that let programs call C code directly, and let anyone extend the language without touching its core. He called it Python — being, he later wrote, “in a slightly irreverent mood” and a fan of Monty Python’s Flying Circus — a name chosen deliberately to signal that this was not a serious enterprise. It turned out to be one.
On February 20, 1991, van Rossum posted Python 0.9.0 to the Usenet newsgroup alt.sources. It already had exception handling, functions, classes with inheritance, and the four core data types — list, dict, string, number — that Python programmers still reach for today. By version 1.0, a Lisp programmer who missed functional idioms had submitted working patches adding lambda, map(), filter(), and reduce(). Van Rossum accepted them, though he later came to regard lambda as a mistake he kept for backwards compatibility. Python has always been that kind of project: opinionated at the center, democratically extensible at the edges.
The community named van Rossum its “Benevolent Dictator for Life” — BDFL — a title coined in a 1995 email that turned out to be accurate enough to stick for over two decades. The joke worked because it described something real: one person’s consistent aesthetic sensibility, applied patiently across millions of small design decisions.
What Python unlocked was not legible from a Usenet post. It was readable enough that biologists and physicists could write it without an advanced computing degree, extensible enough that any C library could be wrapped in an afternoon, and free enough that nobody had to ask permission. NumPy arrived in the late 1990s and made it the language of scientific computing. Django arrived in 2005. When the machine learning frameworks — TensorFlow, PyTorch — needed a primary interface, they chose Python without much deliberation.
The four data types van Rossum sketched in that empty Amsterdam office now structure how the field of machine learning describes the world.
Sources
- The Making of Python — Artima — Guido van Rossum on ABC’s limitations (no file I/O, monolithic design), Python’s extensibility model, and the holiday-break origin.
- History and Philosophy of Python — python-course.eu — The December 1989 start, name choice (“slightly irreverent mood”), and first release details.
- Guido van Rossum on X — release date confirmation — Primary source: “The first Python version, 0.9.0, was released on Feb 20, 1991.”
- Python Wasn’t Built in a Day — GWU OSPO — Background on ABC’s CWI context and the Amoeba OS project.