Zum Inhalt springen

Grace Hopper: The Queen of Code

Zusammenfassung

Rear Admiral Grace Murray Hopper was a mathematician, a naval officer, and the person most responsible for making computers programmable by human beings rather than hardware specialists. Her invention of the compiler in 1952 and her central role in designing COBOL created the conceptual infrastructure for all business computing that followed. She spent the last decades of her career not programming but evangelizing: testifying before Congress, visiting universities, and carrying a nanosecond — a foot of wire representing the distance light travels in one billionth of a second — to explain to generals and senators why the speed of computers mattered. She was awarded the National Medal of Technology in 1991 and the Presidential Medal of Freedom posthumously in 2016. She was also the person who popularized the use of the word “bug” in its modern computing sense.

The Mathematician Turned Navigator

Grace Brewster Murray was born in New York City in 1906, the eldest of three children in a family that encouraged daughters as well as sons toward education. Her grandfather was a rear admiral, establishing the naval connection that would define her later career. She studied mathematics and physics at Vassar College and received a PhD in mathematics from Yale University in 1934 — one of a very small number of women to hold a mathematics doctorate from an Ivy League institution at that time. She joined the Vassar mathematics faculty.

When the United States entered World War II, Hopper tried to enlist in the Navy. She was rejected as too old (she was 34) and too light (too few pounds for military physical standards). She persisted, obtained a waiver, and was commissioned as a lieutenant (junior grade) in the United States Naval Reserve in 1944. She was assigned to the Bureau of Ordnance Computation Project at Harvard University, working under Howard Aiken on the Harvard Mark I — an electromechanical computer that filled a 55-foot room and computed artillery tables for the Navy.

The Bug

In September 1947, Hopper’s team was working on the Harvard Mark II when the machine failed. The engineers found a moth trapped in relay number 70, Panel F, causing a short circuit. They taped it into the logbook with the annotation: “First actual case of bug being found.” The logbook entry — dated September 9, 1947, and signed by operators including Hopper — is preserved at the Smithsonian National Museum of American History.

Hopper did not coin the term “bug” for a computer error; Thomas Edison had used it for electrical faults in the 19th century, and it circulated in engineering slang before computing existed. What she did was popularize the story, telling it publicly for decades as an illustration of hardware debugging’s physical reality. The anecdote became famous enough that “bug” and “debug” entered general usage as computing terms, and their origin is associated with Hopper wherever the history is told.

The Compiler: Code That Writes Code

After the war, Hopper joined the Eckert-Mauchly Computer Corporation, where she worked on the UNIVAC I — the first commercial computer in the United States, delivered to the U.S. Census Bureau in 1951. It was here that she made her most technically consequential contribution.

In 1952, Hopper wrote the A-0 System, the first compiler: a program that translated symbolic mathematical expressions into machine code. Before A-0, programmers wrote instructions in binary or assembly language — every program required intimate knowledge of the specific machine’s instruction set, memory addresses, and hardware architecture. Hopper’s insight was that this translation work was mechanical and could be automated. If a computer could be given a library of subroutines and a program that assembled them according to symbolic instructions, the programmer could think in mathematical terms rather than machine terms.

Her colleagues and supervisors told her it could not be done. Computers were for computation, not translation; writing programs was inherently a task for specialists who understood the hardware. “Nobody believed that I had a running compiler,” she later recalled, “and nobody would touch it. They told me computers could only do arithmetic.” She demonstrated A-0 to prove it worked. The skepticism gave way when the evidence was unambiguous.

She extended the idea with the A-2 compiler (1953) and B-0/FLOW-MATIC (1955) — the first compiler that used English-language statements. FLOW-MATIC commands like READ INVENTORY, COMPARE PRODUCT-PRICE TO PRICE, and WRITE RESULT were comprehensible to business users who had never seen machine code. This was the conceptual breakthrough: if the language was English, business people could specify what they wanted the computer to do. The programmer became an intermediary, not an essential specialist.

“Garbage In, Garbage Out”

Hopper is also credited with popularizing the phrase “garbage in, garbage out” — the principle that a computer’s output is only as good as its input, and that no amount of computation can recover information that was never provided. She used it to combat the widespread assumption among non-technical executives that computers were infallible: that if the computer said something, it must be correct.

COBOL: The Business Language

In May 1959, Mary K. Hawes of Burroughs Corporation organized a meeting of computer users and manufacturers at the Pentagon to discuss whether a common business language was feasible. The attendees included representatives from IBM, Sperry Rand, Honeywell, RCA, and Sylvania, as well as government computing agencies. Hopper was present and forceful: she had been arguing since FLOW-MATIC that the path to expanding computer use was making programming accessible to business people, not requiring business people to become programmers.

The U.S. Department of Defense convened the formal Conference on Data Systems Languages (CODASYL) in June 1959. Hopper served on the short-range committee, which was charged with producing a working specification. The design debates that followed were substantive.

Three existing languages competed for influence: Hopper’s own FLOW-MATIC, IBM’s AIMACO (used by Air Material Command), and Honeywell’s FACT (Fully Automatic Compiling Technique). FLOW-MATIC won the syntax question: its English-language constructs became COBOL’s language foundation. Hopper later described the negotiation diplomatically — she wanted credit for FLOW-MATIC, and she wanted COBOL to succeed, and she correctly understood that claiming too loudly that COBOL was FLOW-MATIC with changes would antagonize the IBM representatives whose machines would run the final language.

COBOL (Common Business-Oriented Language) incorporated several design principles Hopper had developed through her decade of compiler work: English-like syntax with few abbreviations (so that business managers could read programs without specialist assistance); explicit separation of the data description from the procedural logic (the ENVIRONMENT, DATA, and PROCEDURE divisions); and hardware independence — the same COBOL program should run without modification on machines from different manufacturers. The COBOL-60 specification was published in April 1960. The first COBOL compilers shipped later that year.

The design was verbose by programmer standards and intentionally so. A COBOL program that calculated annual salary totals would include declarations like:

01 EMPLOYEE-RECORD.
   05 EMPLOYEE-NAME    PIC X(30).
   05 ANNUAL-SALARY    PIC 9(8)V99.
   05 DEPARTMENT-CODE  PIC XX.

This verbosity struck many programmers as tedious. Hopper defended it explicitly: the redundancy was documentation. A manager who had never programmed could read a COBOL program and understand what it was doing. This was not an accident; it was the design.

COBOL became the dominant language for business data processing through the 1960s and 1970s, running payroll, banking, insurance, and government systems worldwide. It remains in production: as of the early 2020s, COBOL processes an estimated $3 trillion in financial transactions daily. The New Jersey state unemployment system, revealed during the 2020 COVID pandemic surge to be written in COBOL on a 1970s mainframe, was not unusual — it was representative. COBOL’s longevity is simultaneously evidence of its quality (it has been running correctly for fifty years without requiring a rewrite) and a maintenance burden (the programmer population trained on it has retired or died faster than it can be replaced).

Naval Career and Public Advocacy

Hopper attempted to retire from the Naval Reserve multiple times — at 40, at 60, at 79. The Navy kept calling her back. She was promoted to Rear Admiral in 1985, becoming one of the first women to hold that rank, and finally retired in 1986 at age 79 as the oldest active-duty commissioned officer in the U.S. armed forces. The guided-missile destroyer USS Hopper, commissioned in 1997, bears her name.

In her later career, she became the computing industry’s most effective public communicator. She testified before Congressional committees, spoke at universities, and appeared on television explaining why information technology mattered. She carried a foot of wire — her nanosecond — to demonstrate that the speed of light is finite and that every unnecessary foot of cable, every unnecessary instruction, every unnecessary layer of bureaucracy in a computer system, cost time. The visual demonstration communicated what equations could not.

She was insistent that young people learn computers, that bureaucracies should be challenged (“it’s easier to ask forgiveness than it is to get permission”), and that complexity was an obstacle to be engineered away. She received the National Medal of Technology from President Bush in 1991. She died on January 1, 1992, at age 85.

Dead End: COBOL as Perpetual Emergency

The COBOL maintenance crisis illustrates a pattern Hopper could not have anticipated when she designed for readability and longevity: software that is correct and important tends to accumulate rather than be replaced. COBOL programs written in the 1970s run on systems that interface with modern web applications through translation layers that both programmers rarely fully understand. The Y2K crisis (1999) was largely a COBOL crisis: the language stored years as two digits to save storage space, a sensible optimization in 1965 that became catastrophic at the century turn. Billions of dollars of remediation effort fixed the immediate problem; the underlying situation — critical systems in a language with a shrinking programmer base — was deferred rather than resolved. IBM and others now offer COBOL-to-Java transpilers; the transpiled code is correct but often opaque. Hopper’s goal was code that business people could read. The transpiled Java that replaced it serves neither human readers nor the COBOL maintainers who understood the original.


📚 Sources