From a Christmas holiday project in Amsterdam to the world's most popular programming language. 33+ years of evolution.
In December 1989, Guido van Rossum was a programmer at Centrum Wiskunde & Informatica (CWI), the Dutch national research institute for mathematics and computer science. He had been working on the ABC language — an educational language designed to be easy to learn — but found it too rigid and lacking extensibility.
Over the Christmas holiday, Guido started writing an interpreter for a new scripting language he envisioned: one that would inherit ABC's clean syntax and readability but add extensibility, exception handling, and the ability to interface with the Amoeba distributed operating system. He needed a name and, as a fan of Monty Python's Flying Circus, chose "Python."
The design goals were clear from the start: readability above all, a simple and consistent syntax, and a "batteries included" standard library. Unlike C or Java, Python was designed for programmer happiness first and machine efficiency second. This trade-off would prove to be Python's greatest strength.
list, dict, str. Module system was present from day one.lambda, map(), filter(), reduce() — functional programming features influenced by Lisp. Included the module system that would become Python's greatest architectural strength.print() became a function, all strings became Unicode, integer division returns float, range() returns an iterator. The migration would take a decade.yield from, 3.4 added asyncio and pathlib, 3.5 added async/await syntax. Major libraries (NumPy, Django, Flask) begin porting to Python 3. The tide turns.:=) debate, Guido announces he is permanently stepping down as BDFL. Python transitions to a five-member elected Steering Council model.type statement for type aliases, improved error messages. The Faster CPython effort continues with ~5% more speedup.
Python 3's decision to break backwards compatibility was one of the most controversial moves in programming language history. The core team believed that fixing fundamental design mistakes — the str/bytes confusion, integer division behavior, and the print statement — was worth the pain of migration.
They were right, but it took 12 years. From 2008 to 2020, the Python community maintained two parallel, incompatible versions. Libraries had to support both. Tutorials were confusing. Corporate codebases were stuck on Python 2. Instagram ran Python 2 in production until 2017. Dropbox didn't fully migrate until 2020.
The lesson: breaking changes work, but only with a decade of patience. Python 3 is now universally adopted and unambiguously better. The migration pain is over, and Python is stronger for it.
| Version | Year | Key Additions |
|---|---|---|
| 0.9.0 | 1991 | Classes, exceptions, functions, lists, dicts, strings, module system |
| 1.0 | 1994 | lambda, map, filter, reduce, functional programming tools |
| 1.5 | 1998 | re module, improved package imports |
| 2.0 | 2000 | List comprehensions, garbage collection, Unicode, PEP process |
| 2.2 | 2001 | New-style classes, iterators, generators, unification of types/classes |
| 2.5 | 2006 | with statement, conditional expressions, try/except/finally |
| 3.0 | 2008 | print(), Unicode strings, integer division, breaking changes |
| 3.4 | 2014 | asyncio, pathlib, enum, pip bundled with installer |
| 3.5 | 2015 | async/await syntax, type hints (PEP 484), matrix multiply operator |
| 3.6 | 2016 | f-strings, variable annotations, secrets module, underscores in numerics |
| 3.8 | 2019 | Walrus operator (:=), positional-only parameters, f-string debugging |
| 3.10 | 2021 | Structural pattern matching (match/case), better error messages |
| 3.11 | 2022 | 10-60% faster, exception groups, precise error locations in tracebacks |
| 3.12 | 2023 | Per-interpreter GIL, type statement, improved f-strings, more speed |