Grace Hopper
Compilers; COBOL; machine-independent programming
Played by Emily James · LinkedIn
Strongest on
Battles
The corner that sparsity loves L Martin Wainwright
The recombination fraction from a small cross L Jeff Dean
The parallel text is the teacher L Michael I. Jordan
Sample from the impossible posterior L Michael I. Jordan
Drive through the intersection W Ross Girshick
Is there a fast route through every city? W Cathy O'Neil
Cut through the interior L Cathy O'Neil
Plan when you cannot see
Life and career
By the time Grace Hopper retired from the United States Navy in 1986, at the age of 79, she was the oldest serving officer in the fleet and had spent four decades arguing a single proposition against sustained institutional resistance: that computers should be programmed in language humans can read, and that a machine should do the translating.
She was born Grace Brewster Murray in New York City in 1906, into a family that encouraged her curiosity — the well-attested story of the seven-year-old who dismantled seven alarm clocks to find out how they worked is the sort of anecdote that would be suspect if she had not spent the rest of her life behaving exactly that way. She took a degree in mathematics and physics at Vassar in 1928, then a master's at Yale in 1930 and a Yale doctorate in mathematics in 1934, working under Øystein Ore — a genuinely rare credential for an American woman of that generation. She returned to Vassar to teach, and by all accounts was a superb classroom teacher, insisting that her mathematics students learn to *write*, on the grounds that an unexplained result is a useless one.
The war redirected her. She joined the Navy Reserve in 1943 — she had to obtain a waiver, being both underweight and over the preferred age — and after training was assigned to the Bureau of Ordnance Computation Project at Harvard, where Howard Aiken had built the Mark I, a fifty-foot electromechanical calculator. Hopper's first assignment was to make it compute the interpolation coefficients Aiken wanted; her second was to write the manual, which became one of the first substantial documents describing how to program a computer. She worked on the Mark II and Mark III as well, and it was in a Mark II logbook in 1947 that her group taped a moth extracted from a relay, annotated as the first actual case of a bug being found. The word predates the incident by decades, and Hopper always told the story as a joke about literalism, but the page is now in the Smithsonian and the story is inseparable from her.
In 1949 she left Harvard for the Eckert–Mauchly Computer Corporation, working on the UNIVAC I, the first commercial computer in the United States. This is where the important work happened. Programmers at the time wrote machine code and octal by hand, and Hopper — who was, by her own account, a lazy programmer in the productive sense — noticed that they spent enormous effort copying and re-adapting the same subroutines, and made errors doing it. In 1952 she produced the A-0 system, which took a program written as a sequence of calls to catalogued subroutines with their arguments and assembled the machine code automatically. She called it a compiler. The term has since narrowed, and A-0 is closer to a linking loader than to a modern compiler, but the conceptual move was the real one: the machine writes the machine code.
The reaction was skepticism. Hopper described being told repeatedly that computers could only do arithmetic, that they could not be made to understand English, and that no one would trust generated code. She kept going, through A-2, then the B-0 system that became FLOW-MATIC (1955–1959) — the first programming language to use English-like statements for data processing, aimed explicitly at business rather than scientific users. Eckert–Mauchly became part of Remington Rand and then Sperry, and Hopper stayed.
In 1959 the Department of Defense convened the CODASYL effort to produce a common business language across vendors. Hopper was a technical advisor to the committee, and FLOW-MATIC was the direct model for the language that emerged: COBOL. Whatever a modern graduate student thinks of COBOL's verbosity, its design premises — that source should be readable by a manager, that a program should compile and run on hardware from different manufacturers, that data descriptions should be separated from procedural logic — were radical in 1959 and are now simply assumed. Hopper spent the following two decades pushing vendor standardization and validation suites so that portability was real and not merely claimed.
She retired from the Navy Reserve in 1966, was recalled to active duty within a year to standardize the Navy's languages, and the temporary assignment lasted nearly twenty more years. She became a national figure in that period, giving hundreds of lectures, famously handing out foot-long lengths of wire — the distance light travels in a nanosecond — to make latency physical for admirals and undergraduates alike. Two of her lines are genuinely hers and worth keeping: that it is easier to ask forgiveness than permission, and that the most damaging phrase in the language is *we've always done it this way*.
She retired as a rear admiral in 1986, then worked as a senior consultant at Digital Equipment Corporation until shortly before her death in 1992. She received the National Medal of Technology in 1991 and, posthumously in 2016, the Presidential Medal of Freedom. A destroyer, a Navy data center, and the largest gathering of women technologists in the world carry her name.
Key contributions
**The compiler as a concept.** The central contribution is not a specific algorithm but a claim about the division of labor between human and machine. Before Hopper, the programmer's job was to produce the instruction stream. After, the programmer's job was to specify intent in a notation designed for humans, and a program — the compiler — was responsible for producing a correct instruction stream. This is the beginning of abstraction as an engineering discipline in software, and everything from type systems to LLVM to modern ML compilers that fuse kernels for a GPU sits downstream of accepting it.
The A-0 system (1952) implemented the first version: catalogued subroutines identified by call number, arguments supplied by the programmer, the system assembling and relocating the code. A-2 followed, and Hopper's group distributed it to users with source, inviting them to modify and send back improvements — an early instance of a practice that looks a great deal like open-source collaboration.
**FLOW-MATIC and English-like syntax.** FLOW-MATIC's real innovation was demonstrating that the surface syntax of a language is a design variable that can be optimized for the reader rather than the machine, and that doing so does not prevent the compiler from checking it. Hopper's group also built early versions of what we would now call multilingual front ends, showing the same compiler backend driven by French and German keyword sets, to make the point that keywords are notation, not meaning.
**COBOL and portability.** COBOL's separation into IDENTIFICATION, ENVIRONMENT, DATA, and PROCEDURE divisions is an early and deliberate attempt at what we now call separation of concerns — in particular, isolating the machine-specific parts into one place so the rest of the program is portable. Hopper's push for conformance validation suites is an ancestor of the standards-compliance testing regimes that every language and protocol now runs. It is also worth noting the durability: COBOL still processes an enormous fraction of the world's financial transactions, which is a strange kind of vindication.
**Software engineering as an institutional practice.** Documentation, standardization, testing, vendor-neutral specification, teaching non-specialists to program — Hopper treated these as first-class technical problems at a time when the field's prestige was entirely in hardware and numerical method. That framing is her least algorithmic and most consequential legacy.
In battle
Hopper's computed profile is one of the most extreme on the roster: 100 problems, mean 15.4, median 10, two dominant cells, and eighty problems at 20 or below. She is a hard specialist, and the specialization is *making machines usable*.
Her only meaningful category is **systems** at 34.2 across 18 problems. Everything else is in the teens or below: **optimization** 11.4 across 17, **classification** 4.5, **regression** 4.5, **information** 4.0, **causality** 5.0.
Her peak is **P079 — The language for the job** at 97 — literally her desk in 1959, as the matrix puts it, docked three points only because COBOL was still being drafted rather than proven at that moment. **P244 — The compiler that beats the coder** (83) is the modern version of the same argument: whether generated code can outperform hand-written code, a proposition Hopper spent her career defending against people who were certain it could not.
Below those two the drop is immediate and the numbers are honest about what she can only partly claim. **P049 — Schedule the moonshot** (50) and **P082 — Ship it to a hundred contributors** (48) reward her instincts about large-scale software organization and distributed contribution without giving her credit for methods she did not develop. **P048 — Prove the program correct** (46) and **P080 — The software that may not fail** (45) sit in the same band: Hopper cared deeply about software reliability and validation, but formal verification is Floyd, Hoare, and Dijkstra, not her. **P254 — The wall around the data structure** (42) — encapsulation and abstract data types — is Liskov and Parnas territory that COBOL's data division only gestures toward. **P040 — Feed the army for pennies** (42) gives her credit for being the person who would actually get a linear program running on a UNIVAC, not for the simplex method.
The floor is a clean statement of what she never touched: **P212 — Sample from the impossible posterior** (2), **P285 — Test the many with the blood of few** (3, group testing), **P185 — Optimize across the datacenter** (3), **P184 — Fill in the hidden variables** (3, EM), **P183 — Cool it slowly** (3, simulated annealing), **P151 — Three species of iris** (3, discriminant analysis). Hopper held a doctorate in mathematics, but her career after 1944 contains essentially no statistics, no probability, no inference, and no numerical optimization. She built the layer everyone else's algorithms run on and then spent forty years making that layer better, which is a real answer to a real question and an answer to almost none of the questions this board asks.
Play Hopper on language design, compilation, portability, standardization, and the human interface to computation. Anywhere the crux is a distribution, an estimator, or an optimization landscape, she scores near the floor — and, characteristically, would probably have told you to go find someone who knew the mathematics while she got the machine working.