Grace Murray Hopper (December 9, 1906 – January 1, 1992) was an American computer scientist and United States Navy Rear Admiral. A pioneer in the field, she was one of the first programmers of the Harvard Mark I computer, and developed the first compiler for a computer programming language. She conceptualized the idea of machine-independent programming languages, which led to the development of COBOL, one of the first modern programming languages. She is credited with popularizing the term “debugging” for fixing computer glitches (motivated by an actual moth removed from the computer). Owing to the breadth of her accomplishments and her naval rank, she is sometimes referred to as “Amazing Grace”. The U.S. Navy destroyer USS Hopper (DDG-70) is named for her, as was the Cray XE6 “Hopper” supercomputer at NERSC
World War II
In 1943, Hopper obtained a leave of absence from Vassar and was sworn into the United States Navy Reserve, one of many women to volunteer to serve in the WAVES. She had to get an exemption to enlist; she was 15 pounds (6.8 kg) below the Navy minimum weight of 120 pounds (54 kg). She reported in December and trained at the Naval Reserve Midshipmen’s School at Smith College in Northampton, Massachusetts. Hopper graduated first in her class in 1944, and was assigned to the Bureau of Ships Computation Project at Harvard University as a lieutenant, junior grade. She served on the Mark I computer programming staff headed by Howard H. Aiken. Hopper and Aiken coauthored three papers on the Mark I, also known as the Automatic Sequence Controlled Calculator. Hopper’s request to transfer to the regular Navy at the end of the war was declined due to her age (38). She continued to serve in the Navy Reserve. Hopper remained at the Harvard Computation Lab until 1949, turning down a full professorship at Vassar in favor of working as a research fellow under a Navy contract at Harvard.
In 1949, Hopper became an employee of the Eckert-Mauchly Computer Corporation as a senior mathematician and joined the team developing the UNIVAC I. In the early 1950s the company was taken over by the Remington Rand corporation and it was while she was working for them that her original compiler work was done. The compiler was known as the A compiler and its first version was A-0.
In 1952 she had an operational compiler. “Nobody believed that,” she said. “I had a running compiler and nobody would touch it. They told me computers could only do arithmetic.”
In 1954 Hopper was named the company’s first director of automatic programming, and her department released some of the first compiler-based programming languages, including ARITH-MATIC, MATH-MATIC and FLOW-MATIC.
Grace Murray Hopper at the UNIVAC keyboard, c. 1960
In the spring of 1959 a two-day conference known as the Conference on Data Systems Languages CODASYL brought together computer experts from industry and government. Hopper served as the technical consultant to the committee, and many of her former employees served on the short-term committee that defined the new language COBOL. The new language extended Hopper’s FLOW-MATIC language with some ideas from the IBM equivalent, COMTRAN. Hopper’s belief that programs should be written in a language that was close to English rather than in machine code or languages close to machine code (such as assembly language) was captured in the new business language, and COBOL would go on to be the most ubiquitous business language to date.
From 1967 to 1977, Hopper served as the director of the Navy Programming Languages Group in the Navy’s Office of Information Systems Planning and was promoted to the rank of captain in 1973. She developed validation software for COBOL and its compiler as part of a COBOL standardization program for the entire Navy.
In the 1970s, Hopper advocated for the Defense Department to replace large, centralized systems with networks of small, distributed computers. Any user on any computer node could access common databases located on the network. She pioneered the implementation of standards for testing computer systems and components, most significantly for early programming languages such as FORTRAN and COBOL. The Navy tests for conformance to these standards led to significant convergence among the programming language dialects of the major computer vendors. In the 1980s, these tests (and their official administration) were assumed by the National Bureau of Standards (NBS), known today as the National Institute of Standards and Technology (NIST).