By Maike Kaufman
In 1969 the US Data Processing Management Association awarded its first annual ‘Man of the Year’ Award for outstanding contributions to the information processing industry. That year’s chosen recipient, although a pioneer in the area of computing, was nevertheless an unusual one: Captain Grace Murray Hopper, the first ‘Man of the Year’, was in fact a woman. But given her altogether unusual career as one of the first females in computer science, this episode was a typical example of how unprepared the industry was for such a woman.
Grace Hopper was a mathematician by training, receiving a B.A. from Vassar in 1928 and a Ph.D. from Yale in 1934. After a decade of teaching mathematics at Vassar she joined the United States Naval Reserve during World War II and was subsequently assigned to the Bureau of Ordnance Computation Project at Harvard, were she worked on the Mark I project. This first automatically sequenced digital computer was able to perform simple calculations based on a set of instructions previously punched into paper tape.
Early digital computers were capable of performing mathematical calculations with increasing speed but their programming was extremely cumbersome. For each task the programmer was forced to construct a list of actions to be taken by the machine. Typically these included reading stored data, performing calculations on it and writing the result to a new, specified storage location. All of these commands had to be provided in machine-readable numeric codes, meaning that this procedure was both time consuming and error prone, as the handling of large columns of numbers lead to numerous mistakes. Nevertheless, it was the established belief held by majority of the user community that this was the only feasible way to instruct a computer.
In 1949 Hopper joined the Eckart-Mauchly Computer Corporation, which was at the time involved in building the first commercial large-scale electronic computer. It was there that she began to explore the possibility of improving the existing error prone nature of programming, as developers were increasingly dependent on producing faultless programs quickly in order to keep up with the speed of technical development. In order to do this they were re-using bits of previously written programs, which they copied and pasted at whichever position they were needed. This, however, introduced an additional source of error: the reused fragments had to be engrafted into the new program correctly.
Hopper’s solution to this was to devise a way in which the computer itself could perform the task of joining together the program pieces, thus eliminating copying and pasting errors. She proposed a program (called a ‘compiler’), which would take well defined construction orders as input and then produce a machine-readable (executable) file independently. This suggestion was in fact such an innovative one that it was met with general disbelief by users, the prevalent opinion of the time being that computers were able to perform algebraic operations, but nothing more beyond that. However, this was an attitude Hopper was to repeatedly experience and it did not curtail her from pursuing her project.
Hopper subsequently produced the world’s first compiler, called A-0, in 1951. It allowed the programmer to specify which existing sub-programs to utilize and translated these specifications into an executable file, which could be evoked at any later time. The A-0 succeeded at improving speed and stability for reassembled programs, but it still had one important flaw: it required the inserted sub-programs to be available in machine-readable code to begin with.
Hopper wanted to make programming accessible to as wide a user-base as possible, but knew that this was limited by the employed language being hardly intelligible for anyone but technicians. Therefore, together with her team, she began to probe the possibilities of instructing computers using a command language similar to English, which would again be translated into machine code by a compiler.
As with the proposal for the A-0 compiler, the general reaction to this idea was incredulity; the company’s management declared that computers could not possibly understand instructions in English. Again, Hopper and her team persisted and ultimately convinced corporate decision-makers of their concepts’ feasibility and potential. By writing three programs from a small set of instructions in English, French and German, which all compiled to yield identical results, they proved that a compiler could be used to translate any set of well-defined orders into instructions understandable by the machine. Out of this basic demonstration a full programming language was later developed: FLOW-MATIC was commonly available by 1958 and is today considered to be the first data processing language with semantics similar to English.
Most modern day programming languages are still built on these same principles: a program is written in a programming language based on English instructions and translated into machine-readable code by the compiler. Regardless of which specific machine a program is written and compiled on, the executable file will yield the same results.
The advancement of compilers and intuitive programming languages had a profound impact on the ascent of computers. It allowed for faster, more reliable programming, independence of machine specifics and the opening of the programming community beyond research and development departments. Many of today’s applications with their intricate graphics and complex calculations could not be imaginable, if they were still programmed in machine-readable code directly.
Among those most active in this technological development, Grace Hopper stood out by constantly striving to close the gap between developers and users. At a time when widely accessible computers were unimaginable to most users, she persisted in pushing these boundaries.
Hopper continued to alternate between commercial commitments and active Naval Duty for many years following. An annual law passed especially for her by US congress allowed her to stay with the Navy until 1986, when she finally retired from duty at the age of 79. Even then she kept her position as a senior business consultant for industry until she died on January 1, 1992 at the age of 85.
Hopper. G, History of Programming Languages I (ACM 1981)
Sammet. J, Farewell to Grace Hopper – end of an era! Communications of the ACM (ACM 1992)
Hopper. G, The education of a computer, Proceedings of the 1952 ACM national meeting (ACM 1952)
All references are available through portal.acm.org