Chapter 5 · 1957 → now

The trade

Machine time used to cost more than human time. Then the lines crossed, and all of modern software is what happened next.

The afternoons in this chapter
  • John Backus (United States) — Hated hand-writing machine code badly enough to spend three years teaching the machine to write it instead.
  • John Kemeny (Hungary) — Wanted every Dartmouth student, poets included, to be able to write a program before breakfast.
  • Thomas Kurtz (United States) — Co-built the language and the time-sharing system that made it feel instant, then gave both away.
  • John McCarthy (United States) — Invented a language thirty years ahead of the hardware while trying to make machines reason.

Here is the deal underneath every piece of software you have ever used: waste the machine’s time to save the human’s.

It did not start that way. In the early 1950s, a computer cost millions and a programmer cost a salary, so the math ran the other direction — human time was the cheap part. Programmers wrote in raw machine code, the computer’s own numbers, and were expected to hand-polish every instruction the way a jeweler cuts stones. The machine’s hours were precious. Yours were not.

John Backus hated it. He was a young IBM programmer — a former medical student who had drifted into computing — and he later said plainly that he was lazy, and that hand-coding was “hand-to-hand combat with the machine.” In 1953 he sent IBM a short memo proposing something most experts considered naive: let programmers write something closer to math — a formula, in something like English — and let the machine translate it into its own instructions. A program to write programs. It took his team three-plus years. In 1957 they shipped it: FORTRAN, the “formula translator,” history’s first widely used compiler.

The old guard called it waste, and by their lights they were right: FORTRAN’s generated code was slower than what a good human could write by hand. The Backus team fought for years to close the gap, and got remarkably close — but the deeper answer to the objection wasn’t engineering. It was economics. Computers were getting cheaper and faster every year, and programmers weren’t. Sometime in the 1960s the cost lines crossed for good: the machine’s hour became cheaper than yours, and it has never crossed back. Once that’s true, burning machine cycles to save human effort isn’t waste. It’s the only rational trade in the room.

So the industry made the trade again. And again. And again. Each round bought programmers more convenience — and this is the part people miss, each round gave something up. Every step hides part of the machine from you, and what it hides doesn’t go away. It just keeps working underneath, invisible, until the day it isn’t.

Climb the ladder below — it’s this chapter’s whole argument, one click per rung. Each rung tells you what it hides from you, what it still makes you carry, and what it costs. Two rungs from the story so far are worth flagging on the way up.

C is the strangest bargain on the ladder: a rung invented as a getaway car. Dennis Ritchie built it — this is chapter 4’s story — so that Unix could escape the one machine it was born on. C hides the instruction set, and hides almost nothing else: memory is still entirely yours to manage, and entirely yours to get wrong. Portability was the prize, and the price was a whole category of bug — buffer overflows, memory corruption — that has kept security teams employed for fifty years. Decades of break-ins live on that one rung.

BASIC is the rung with the open door. At Dartmouth in 1964, a mathematician named John Kemeny — a Hungarian immigrant who had once worked as Einstein’s calculating assistant — and his colleague Thomas Kurtz decided every student, poets included, should be able to write a program. They built a deliberately friendly language and a time-sharing system to run it, so a hundred people at terminals could share one computer and each feel it was theirs. Then — hear the chapter 2 echo — they gave it away. Any school could have BASIC free. Twenty years later it was burned into the chips of nearly every home computer on Earth, which is why a generation’s first program was written in it.

And one rung was built before its time and had to wait. John McCarthy’s Lisp, from 1958, pulled a trick the rest of the industry wouldn’t adopt for decades: garbage collection, the language cleaning up its own memory so the programmer never thinks about it. On 1958 hardware this was scandalously expensive — Lisp spent thirty years as the brilliant language that machines couldn’t comfortably run. Toggle the ladder to its second view and you can see this as a picture: each rung shown at the year it was invented and the year hardware finally made it cheap. Some rungs waited a few years. Lisp and Python waited decades — abstractions born ahead of the curve, sitting on the shelf while the chips caught up.

That’s the engine of this whole era, so it deserves saying plainly: the hardware picked up the check. Every rung of the ladder burns machine efficiency to buy human convenience, and for fifty years the doubling — chapter 3’s curve — quietly paid for every round. Software got slower per instruction and nobody cared, because next year’s machine erased the difference. “Ship it now, the hardware will save you” had a name among engineers: the free lunch.

If you want the whole trade in one before-and-after: the machine the first Unix ran on had about 18 kilobytes of memory — total, for the kernel and every program it ran, roughly this chapter twice over. A blank, do-nothing desktop app built with today’s fashionable tools starts at several hundred megabytes: tens of thousands of times larger, to do nothing at all. And here is the honest part — mostly, that’s fine. It’s fine because the curve paid. Those megabytes bought development speed, safety, and portability, and the hardware absorbed the bill without sending it to you.

The catch — and the reason this book has six more chapters — is what happens if the hardware ever stops paying. Hold that thought. First, climb the ladder. Notice, as you climb, that the years on the rungs refuse to line up in order — a 1958 rung sits near the top, a 1972 rung near the bottom. The ladder sorts by how much of the machine you still hold, not by calendar. And notice the thesis hiding in the coloring: when you stand on any rung, every rung below you is still there, still running, holding you up. C never died. It just moved underneath everything.

The ladder

Rungs are ordered by how much of the machine you still hold — not by year. The years jump around. That is the point.

Machine code (1945, The hardware itself)

Hides
Nothing.
Still yours
Everything. Every bit, every address, every instruction, in the machine's own numbers.
The cost
You are the compiler. A program is thousands of hand-written numbers, and one wrong digit is a crash you hunt for days.

Assembly (1949, Cambridge (EDSAC))

Hides
Opcode encoding and address arithmetic — you write MOV instead of the number that means MOV.
Still yours
Registers, instruction order, memory layout. You still place every value by hand.
The cost
Portable to exactly one instruction set. A new machine means starting over.
People
David Wheeler

C (1972, Bell Labs, via BCPL (1967) and B (1969))

Hides
The instruction set. The same source compiles for any target.
Still yours
Memory. Every allocation, every lifetime, every bound is yours to manage — and yours to get wrong.
The cost
Portable source, not portable behavior. What happens when you break the rules is officially undefined, and undefined behavior became a permanent industry tax.
Leaks through
Endianness · Alignment · Word size · Stack layout
Bug classes born here
Buffer overflow · Use-after-free · Format string
People
Dennis Ritchie

C++ (1979, Bell Labs)

Hides
Resource lifetime — objects clean up after themselves when they go out of scope.
Still yours
C's entire memory model, with no runtime safety net underneath the new conveniences.
The cost
A language surface so large that no two teams use the same subset. Abstraction that still charges full price if you don't know what it compiles to.
Leaks through
Everything C leaks · Object layout · Hidden copies and allocations
Bug classes born here
Everything C has · Iterator invalidation · Object slicing
People
Bjarne Stroustrup

FORTRAN / ALGOL (1957, IBM (FORTRAN), international committee (ALGOL, 1960))

Hides
Register allocation and instruction selection — the compiler writes the assembly now.
Still yours
Control flow. Memory layout, mostly — arrays are fixed at compile time, so there is no heap to mismanage.
The cost
You now trust code generation you didn't write and mostly can't read. The first rung where 'the compiler did something surprising' becomes a category of problem.
Leaks through
Word size · Numeric precision · Column-major array layout
People
John Backus

BASIC (1964, Dartmouth College)

Hides
Compilation, memory, and the machine — you type RUN and it runs, while you sit at a terminal sharing one computer with a hundred people.
Still yours
Line numbers and your patience.
The cost
Speed, and the ceiling is low — BASIC was built for teaching, not for building. Kemeny and Kurtz gave it away free, which is why it ended up on every home computer of the 1980s.
Leaks through
The time-sharing system's mood · Performance cliffs
People
John Kemeny, Thomas Kurtz

Java (1995, Sun Microsystems)

Hides
Memory management and the machine itself — programs run on a simulated computer that is the same everywhere.
Still yours
Types, and explicit concurrency. You still say what everything is, and you still coordinate your own threads.
The cost
You can no longer say when memory is freed, and garbage-collection pauses become a production concern instead of a language one.
Leaks through
GC pauses · JIT warmup · The heap you can't see
Bug classes born here
Unsafe deserialization · Classloader attacks
People
James Gosling

Lisp (1958, MIT)

Hides
Memory — the system reclaims it for you, a trick called garbage collection that Lisp invented in 1959. Types, mostly. The machine, almost entirely.
Still yours
Parentheses, and a direct line to the program as a thing the program itself can manipulate.
The cost
In 1958, everything — the hardware wouldn't make this rung comfortable for another thirty years. Lisp is the ladder's time traveler: a 1990s abstraction invented when computers filled rooms.
Leaks through
GC pauses · The gap between elegance and the machine underneath
People
John McCarthy

Python (1991, CWI Amsterdam, syntax from ABC, implementation in C)

Hides
Types, memory, compilation, the machine. Almost everything.
Still yours
Almost nothing about the hardware.
The cost
Performance, and a dependency on C for anything fast — Python itself is a C program, and every fast numeric library underneath it is C or Fortran. The rung that most convincingly pretends the rungs below don't exist.
Leaks through
Performance · The C extension boundary · The Global Interpreter Lock
Bug classes born here
Supply-chain attacks via package ecosystems
People
Guido van Rossum