The photograph on the book's cover shows an elegant Grace Hopper in a black dress rather than a Navy uniform, with a sleek flip to her hair, stylish earrings, and — Yikes! Is that a cigarette???
Yes, indeed! When the same photograph adorned a children's book about Grace Hopper a few years ago, the offensive nicotine-delivery system was removed. But for Kurt W. Beyer's Grace Hopper and the Invention of the Information Age (MIT Press, 2009), that very visible cigarette is the first indication that the book itself will be an honest, unvarnished appraisal of this brilliant pioneer in computer programming and language development.
In particular, Grace Hopper doesn't flinch at discussing Hopper's battle with alcoholism in her early 40s, including a drunk-and-disorderly arrest in the wee hours of the morning in 1949, followed by a hospitalization, and an intervention letter from her colleague Edmund Berkeley. Unpleasant incidents and difficult personality traits are essential in any biography that intends to let us understand the full person. Unfortunately, this book doesn't go quite far enough, and consequently feels incomplete. If we are told about Grace Hopper's alcoholism, then we should also learn about her recovery from alcoholism, and that's missing.
Also missing is pretty much everything else about Grace Hopper's personal life away from the computer. What were her political sympathies? Did she have any pets? What kind of books did she read? Music? Were her homes small and austere, or big and ornate? Was she romantically involved with anyone at all following her 1945 divorce?
For these reasons, I hesitate to call Grace Hopper and the Invention of the Information Age a "biography." Instead, it's more of a Grace-Hopper-centric history of the early computer industry with a special focus on software. Beyer himself identifies the book as an attempt "to highlight Hopper's achievements from 1945 to 1960 within the context of the people and events that surrounded her." (p. 21) To its advantage, the book relys very much on original documents and oral histories.
Grace Murray was born in 1906 in New York City; her mother was a mathematician and her father was an insurance executive. Grace went to Vassar, and then to Yale for graduate studies in mathematics and physics. Beyer turns up an interesting statistic that between 1930 and 1934, 15.7% of the doctoral degrees in mathematics went to women, but after that period, the fraction declined for many decades, not reaching that level again until 1989! Grace Murray was nevertheless the first woman to receive a mathematics doctorate from Yale. She married Vincent Hopper and began teaching mathematics at Vassar. On sabbatical in 1940-1941, Grace Hopper studied partial differential equations with Richard Courant at NYU.
The bombing of Pearl Harbor caused many people to rethink their careers, and Grace Hopper was one of them. Her marriage was failing anyway — Beyer provides no information about the actual marriage or its termination — and she joined the Navy. Given Grace Hopper's skill in mathematics, she was assigned to work for Howard Aiken, who was in command of a seminal computing machine at Harvard.
While a graduate student, Howard Aiken had needed to do a lot of number crunching, and he thought it could be done with a machine. This eventually led to a collaboration between Harvard and IBM that resulted in a machine called the Mark I (by the Harvard folks) and the Automated Sequence Controlled Calculator (ASCC) by IBM, a relay-based machine that is now commonly regarded as one of the first programmable computers.
This computer had now been mobilizied to do calculations for military work, and Grace Hopper's job was to "code" the machine — that is, to determine what holes should be punched in a paper tape to carry out sequential mathematical operations on the machine. There was no branching and no looping, and no book and no classes to tell you how to do it. Grace Hopper became, in Beyer's view, "the third programmer of the first modern computer." (p. 205) The problems to be solved were all mathematical problems, such as differential equations. The skill of coding required breaking the problem down into little pieces, and then determining the machine codes to carry out those calculations.
"Coding" (later to be called "programming") became the work of highly skilled mathematicians.... Rudimentary tasks such as tape punching and plugboard manipulation were allocated to less skilled operators. The difference in status between coders and operators at Harvard was formally captured by military rank; coders were officers, while operators were enlisted personnel. (p. 56-57)
Of course, coding took a toll on people's ability to think correctly while away from the computer. The Mark I (and its successor the Mark II) had to be coded with octal digits, so every month Hopper's "checkbook would be unbalanced because she would slip into octal addition and subtraction when balancing her accounts." (p. 195)
The early chapters in Grace Hopper are fascinating as we watch these early coders discover for the first time in history what programming is all about — including the need for documentation and debugging. The word "bug" was an old engineering term and it was quickly adopted by the coders. A moth found stuck in a relay was taped into the log book and labeled as "First actual case of bug being found."
Across the Atlantic Ocean, Maurice Wilkes was learning these same lessons, and later wrote "I well remember when this realization first came on me with full force... that a good part of the remainder of my life was going to be spent in finding errors in my own programs." (p. 65)
Beyer credits the use of subroutines to "simultaneous invention" (p. 103). In the early 1940s, several early programmers, including Grace Hopper and Maurice Wilkes, figured out that it might be useful to have particular chunks of code available for use in larger programs. I personally feel that subroutines were actually invented by Alan Turing in 1936. (See Chapter 7 in my book The Annotated Turing.) Because Grace Hopper is a very selective history, the book only mentions Alan Turing once and then incorrectly in connection with the Colossus. (p. 107)
In 1949, Grace Hopper left Harvard and became an employee of the Eckert-Mauchly Computer Corporation, founded by John Mauchly and J. Presper Eckert after they left the University of Pennsylvania where they had developed the ENIAC. (EMCC would soon become a subsidiary of Remington-Rand.) By 1949, EMCC was developing the UNIVAC; the machine would later become very famous when it was featured on television predicting the outcome of the Presidential election in November 1952.
In October 1951, Grace Hopper began working on a little project that is now commonly regarded as the first compiler. She called this technique "automatic programming" because it allowed the programmer to write what was called "pseudo-code" which was then translated into the native "machine code." The translation was performed by a program she called a "compiler," so named because it "compiled subroutines into a program in much the same way that historians compile books into an organized bibliography." (p. 223) The intention was to relieve some of the drudgery of coding, and to let it be done by a wider variety of people less skilled in mathematics
Grace Hopper's first compiler was called A-0, and of course it was followed by the progressively more sophisticated A-1 and A-2. The chapters about these early compilers are quite fascinating. It's amusing to hear people leveling complaints against compiled languages that continued for decades — that the resultant machine code is slower and less efficient than that created by a good programmer.
In the mid-1950s, programming languages began moving in two different directions. Grace Hopper's A-3 was succeeded by AT-3, which became MATH-MATHIC (around 1957), which was a symbolic language for doing mathematics, similar in concept to what John Backus was doing at the same time at IBM — the Mathematical Formula Translating System or FORTRAN. (FORTRAN later became so popular that it replaced MATH-MATIC even on the UNIVAC.)
But Grace Hopper also perceived that it was necessary to have languages that don't use symbols at all. Like human langauges, these computer language would consist of nouns and verbs and prepositions and even adjectives. Such languages would "democratize" the skill of programming by making it accessible to less technical programmers. Such languages might also be more suitable for emerging business applications rather than scientific or engineering applications. Between 1955 and 1958, Grace Hopper developed the language FLOW-MATIC, which featured program statements that look something like this:
ADD RAW-MATERIALS TO LABOR-COST TO OVERHEAD; STORE THE SUM IN TOTAL-COST.
Grace Hopper did not invent the very similar Common Business Oriented Language (COBOL), but she was certainly an influential part of the development committee made up of representatives from six computer companies and two government agencies. Obviously COBOL was influenced by FLOW-MATIC, and there were other wordy business languages also in development, such as IBM's COMTRAN, but COBOL was also designed to be hardware-independent and run on a variety of machines.
As we all know now, COBOL was an extraordinary success:
In the 10 years after its  introduction, COBOL became the most widely used programming language throughout the world. By the turn of the millennium, it was estimated, 240 billion of the 300 billion lines of computer code (about 80 percent of all code worldwide) was written in COBOL. (p. 301)
There have always been programmers who never liked COBOL, and I am one of them. Although COBOL looks like natural language, it's really not. That appearance is a sham. The syntax is as strict as any symbolic language. All COBOL really does is substitute words (such as ADD) for common symbols, and move around operators and variables to achieve something resembling natural language sentence structure. This might make sense for high-level operations such as sorting and formatting, but it doesn't make sense for arithmetic, where the language of algebra is well known and learned at a very young age by everyone.
Grace Hopper and the Invention of the Information Age effectively ends in 1960 with the introduction of COBOL. Grace Hopper continued to advise, lecture, and inspire until her death at the age of 86.
I am sure a better biography of this extraordinary woman will someday be written. Until then, this book is a terrific alternative to hardware-centric computer histories, and it's the best book I know that really shows us how the occupation of Computer Programmer came into being.