This is the overture to Written in Python, a series on how one language shaped artificial intelligence, and how intelligence is now reshaping it.
Every stack has layers nobody looks at, because they work. Python is the top layer of the stack that trains artificial intelligence, then runs it: beneath the notebook, beneath the for loop that reads like plain English, there is C, there is CUDA, there is silicon that has never heard of a for loop. Python’s whole reputation rests on being slow, readable, and irrelevant to performance, on the theory that some layer underneath does the real work. That theory is correct, yet it is not the reason artificial intelligence runs on Python. The real reason is that the top layer, the slow one, the one built for a person to read, decided which ideas got tried at all.
Every dynamic type, every eager execution, every notebook cell a researcher could rerun out of order made some research direction cheap to attempt and another expensive. A language is supposed to be neutral about what gets built with it. This one was not, and the unneutrality compounded for two decades into something closer to a policy than a preference. Entire research programs got tried because trying them cost an afternoon in a notebook rather than a rewrite in a systems language, and other programs quietly never happened for the same reason in reverse.
Now the layer is being read from the other direction. An enormous amount of Python, written for other humans to read, sits inside the training data of the models that are starting to write the next share of it. The syntax stays legible. What survives underneath it is no longer obviously a human decision.
The Stack
Eight layers, top to bottom, all on the Written in Python shelf.
The Slowest Language Won: Python runs orders of magnitude slower than C, and every frontier model is trained by it. The usual explanation for that gets the causation backward.
The Array Became the Unit of Thought: A slow language cannot drive fast hardware one number at a time, and the fix that let it wasn’t a faster compiler.
The Languages That Lost: The standard AI textbook once ran on a different language entirely, and the reason it left is written down, in the author’s own words.
The War Inside One Language: Two frameworks fought for years, each backed by a company worth a trillion dollars, over an ecosystem both of them shared.
What the Language Selected For: A tool a student built in six weeks to avoid finishing his thesis now shapes what an entire field counts as a result.
Everything But the Syntax: The engineer who helped make Python the default language of machine learning later went hunting for the one thing still slowing it down.
The Layer Python Does Not Own: The person behind one of the industry’s most-used data formats now argues that models should write code instead of filling in templates for it.
The Last Human-Readable Layer: The corpus that trained the models is human-written Python. What that locks in has no name yet.
Five Runtimes
If you’ve always taken it for granted that Python is simply the language of AI without asking how that happened, start at the beginning. Part 1 through Part 3 follow the accidents, the six-week side projects, and the deliberate abandonments that decided this before deep learning existed to need a language at all.
If you care about where the performance actually goes, Part 2 and Part 6 follow the mechanism directly: how an array let a slow language drive fast hardware, and what happens now that Python’s own contributors are hunting for the one thing still slowing it down.
If you’re the kind of reader who wants to know why a technically better language can still lose, Part 3 and Part 4 are built for you: a twenty-year-old contest and a two-year-old one, decided by the same mechanism both times.
If you build with agents and want to know why code, not a tool-call schema, keeps winning as the interface models act through, Part 7 makes the case directly, and ties it back to the same policy the earlier parts already established: whatever a model can compose, branch, and hold state in beats whatever it can only fill in.
And if what you actually want to know is what a language leaves behind once it stops being the only thing deciding what gets tried, Part 8 is where the series lands.
C has never known that it sits underneath Python. Neither has CUDA. The only layer in the whole stack that has ever cared about being readable to a person is the top one, and for twenty years that care looked like a limitation rather than a decision. It was the decision the whole time.
Now Python’s readers are no longer only human, and nobody has gone back to ask whether the decision to make the language readable still makes sense. What that decision is worth has no name yet.
Written in Python. How a language built for human readability became the control layer of machine intelligence.


