Salamis Tablet - Journal of Computer History


Grace Hopper - Matriarch of Programming

On November 22, 2016 United States President Barack Obama awarded the Presidential Medal of Freedom to computing pioneer Grace Murray Hopper (1906-1992).

"If Wright is flight and Edison is light, then Hopper is code," Obama said in presenting the medal.

The posthumous award of the nation's highest honor helped to cement a place in the annals of computer history for the diminutive mathematics professor who at the age of 37 left behind a career and husband of 15 years to join the Navy. Propelled by the patriotic fervor of World War II, Hopper had no idea her first Naval assignment would be to operate the Mark I computer, much less that she would soon find herself at the forefront of the computer age and counted among the great innovators of the 20th century.

"She saw beyond the boundaries of the possible, and invented the first compiler, which allowed programs to be written in regular language and then translated for computers to understand." Obama said. "While the women who pioneered software were often overlooked, the most prestigious award for young computer scientists now bears her name. From cell phones to cyber command, we can thank Grace Hopper for opening programming to millions more people, helping to usher in the information age and profoundly shaping our digital world."

Born Grace Brewster Murray in New York City, December 9, 1906, Hopper grew up in a well-to-do family where education and intellectual curiosity were highly prized. Her father, Walter Murray, was an insurance company executive who held his children to high standards. Her maternal grandfather, John Van Horne, was a civil engineer and he would bring her along as an assistant on surveying jobs.

"My grandfather had been a civil engineer, and he was a senior civil engineer in the city of New York," Hopper told journalist Angeline Pantages in 1980. "He used to take me with him when he went out surveying, and he let me hold the red and white pole. And he also let me look through his gadget. And I wanted to be an engineer."

Her mother, Mary Murray, had a love for mathematics that she was never able to fulfill because at the time higher education for women was discouraged. Her younger siblings, Roger Murray and Mary Murray Wescotte, both showed mathematical talent.

In interviews and talks Hopper recalled her childhood as very happy with particularly fond memories of summers spent with her extended family at a cottage near Lake Wentworth in New Hampshire.

She attended private New York City schools, the Graham School from 1912 to 1916, followed by Miss Mary Schoonmaker's School for Girls from 1916 until 1923.

In a ca.1981 interview for Computerworld magazine she recounted "You were educated and had some background when you were through then, not like today. It didn't give us any inhibitions, it gave us an interest in reading and history."

Hopper graduated from Vassar College in 1928 having studied mathematics, physics and engineering. In 1931 she began teaching at Vassar, first as an assistant in mathematics. and then steadily rising to become an associate professor. While teaching at Vassar, Hopper continued her education at Yale University and in 1934 was awarded a doctorate in mathematics, the first woman in Yale history.

Hopper had a broad interest in the sciences and continued studying among multiple, diverse disciplines including physics, chemistry, economics and philosophy. She brought this interdisciplinary approach to her teaching and became a popular professor recalled by former students as engaging, energetic and inspiring.

In 1941, she was granted a one-year sabbatical under the Vassar faculty fellowship and studied under Richard Courant at New York University. With Courant she worked on partial differential equations, an emerging field in mathematics with broad applications in such diverse areas as quantum mechanics, aircraft design and weather prediction.

At the outbreak of WWII, driven by patriotism and a desire for change, Hopper sought to enlist in the Navy. She faced several obstacles. At 36 she was considered too old, she was underweight, and her civilian profession as a mathematics professor had been identified as crucial to the war effort. She obtained waivers for age and weight and entered Naval service in December 1943.

Hopper took well to military life and discipline and in June 1944 graduated from Midshpmen's School first in her class.

Hopper, now lieutenant junior grade, was assigned to work with Lieutenant Commander Howard Aiken on the Automatic Sequence Controlled Calculator at Harvard. Named Mark I by the team, the device was a mechanical, universal calculator designed to solve a range of mathematical problems including differential equations.

The Mark I was nothing less than spectacular. The machine was 51 feet long, 8 feet tall and 2 feet deep. It was electromechanical in nature and included over 700,000 components such as relays, switches, shafts, gears and clutches. More than 500 miles of wire made about 3 million electrical connections. The entire apparatus weighed more than 10,000 pounds. It was dramatically housed in a sleek frame of glass and steel designed by Norman Bel Geddes, an art deco industrial designer best known for the Futurama exhibit at the 1939 World's Fair.

Aiken was the driving force behind the construction of Mark I. His concepts for a large-scale, automated calculator began to coalesce ca. 1935 while he was completing his graduate work at Harvard University. In 1937, by then a Harvard professor, he began submitting proposals to the prominent calculator manufacturers of the day. Aiken had studied the work of 19th century engineer, entrepreneur and computing visionary Charles Babbage. His concepts for automatic calculation were very much inspired by Babbage's designs for the difference engine and analytic engine.

Aiken received multiple rejections before he managed to catch the attention of IBM President Thomas J. Watson. Aiken's proposal for IBM spelled out certain specific IBM technologies, particularly punched card calculating machines, which likely sweetened the pot for Watson as he considered the potential collaboration with Harvard.

In 1939 IBM's board of directors gave formal approval for the project, estimated at $100,000, to be funded jointly by the Navy and IBM. In May of that year, work began at IBM's North Street Laboratory in Endicott, New York. There a team of IBM engineers developed and implemented Aiken's high level concepts to produce a functioning machine.

In terms of architecture, design and implementation, the Mark I sits at an interesting historical juncture. It was the penultimate mechanical calculator and a marvel of the industrial age. Driven by a 50 foot drive shaft, its hundreds of thousands of relays, gears and clutches marched along in perfect precision, so quiet its sound was likened to that of a "roomful of ladies knitting" by one unnamed visitor. But in this regard the Mark I was also an evolutionary detour on computation's family tree. Even as IBM's engineers were finalizing their work, other teams in the United States and Britain were laying the foundation for modern electronic computers, implementing groundbreaking concepts with vacuum tube digital circuitry.

In a circa 1983 article "Commander Aiken and My Favorite Computer," Hopper discusses the Mark I and its place in history:

"In my opinion, Mark I was the first large-scale, digital computer in the United States; the first machine to be built in order to assist the power of man's brain instead of the strength of his arm. Even though many more computers were built during the war and later, Mark I will always remain the first in the United States. We are apt to forget that Mark I was automatically sequenced, which is to say, she was programmed. Great praise is bestowed upon ENIAC as our first electronic computer, but ENIAC was not originally programmed; that capacity was only added later. ENIAC was a plugboard machine on which you simulated a problem. So, from the point of view of the programmers, because it was sequentially programmed, step by step, one operation after another, Mark I clearly resembled more closely what we have today than other early machines."

The Mark I ran its first test calculation in 1943. It was later dismantled and relocated to the Harvard Computation Laboratory. An official ceremony August 7, 1944 marked the event. The dedication ceremony and an associated press release are notable because Aiken appeared to take full credit for the creation of Mark I. Watson was in attendance and was infuriated that IBM's contributions were not acknowledged, starting a rift between the two men which would never close.

Aiken was a naval reservist and had been activated for the war. Under his watch, the Harvard Computation Laboratory was run as military installation and Navy protocol observed. He was remembered by most who encountered him as an imposing figure. He was tall, about six foot. He had a reputation for being harsh and even abrasive at times, bringing his sharp intellect to bear against colleagues and underlings.

As Hopper herself recalled in many interviews and lectures, Aiken's first words to her were the less-than-welcoming "Where in the hell have you been?" (He had requested that she skip Midshipman's School and begin work on the Mark I immediately, and had apparently been waiting for her arrival for two months.)

He gave her a tour of the facility and then immediately put her to work on her first task; she had one week to use the Mark I to calculate a large table of arctangent coefficients. The mathematics itself was of course well within her abilities, but she knew nothing of the theory or operation of the calculator. She accomplished the task with little more to guide her than the tutoring of two members of Aiken's staff, Bob Campbell and Richard Bloch, and a collection of Campbell's notes called the "Code Book."

One of the Mark I's many notable features was its Babbage-inspired use of a paper-tape mechanism for loading pre-written instructions for performing calculations. The instructions coded on the paper tape were in three 8-bit parts. One part indicated where the data for the operation was to be found, one part indicated where the output of the operation was to be stored, and one part indicated which operation was to be performed.

Timing for the Mark I was driven by the central driveshaft. One step of code was executed on each rotation of the shaft. The shaft made about 3 rotations per second. Addition could be accomplished in one cycle, while multiplication took about 30 cycles and a logarithm almost 300.

Setting up a run on the Mark I involved a combination of coding the instructions onto paper tape and configuring plugboards that drove precision (how many decimal places of accuracy) and other parameters for the machine functions.

For some of the more advanced functions like sine and logarithms, Hopper ultimately determined it was more efficient to code the functions specifically for the task at hand than to rely on Aiken's built in hardware versions.

For many complex computations, limitations of the hardware required problems to be broken up into segments with intermediate results captured manually and setup for the next phase of computation. This requirement for human interaction necessitated a disciplined organizational approach to operating the Mark I which ran 24-7 throughout the war.

"Most people have forgotten why we were so greatly in need of computation during the war," Hopper wrote in "Commander Aiken and My Favorite Computer"

"World War II saw an almost complete change in our weapons systems. New weapons required new numerical techniques for their design and deployment, techniques that depended upon computation. For example, the Navy used new mines that either acoustically or magnetically detected the presence of a ship without direct contact. To deploy them effectively meant calculating the range over which the mines could damage a ship compared to the range at which they could detect it. The results of these calculations told us how far apart to sow the mines. A similar situation pertained with respect to depth charges. Early depth charges were merely rolled off the stern of a destroyer. The new ones introduced during the war were propelled by rockets. The question was where should they go and in what pattern should they be fired. Again, computations were required to find the answer. Self-propelled shells armed with proximity fuses posed similar questions.

"All these new weapons required new computations, endless computations..."

Hopper and Bloch devised various clever codings to push Mark I's efficiency and reduce the number of cycles required for a given problem, but were immediately confronted by the difficulties of reconstructing their thought process when going back to analyze the more complex code. Commenting (annotating) code and maintaining system documentation became routine for Hopper and the team.

The desirability of reusing portions of code was apparent early on in learning to program Mark I. Hopper and Bloch started keeping notes of useful subroutines that they organized into libraries. They also developed a level of abstraction in writing out the subroutines that facilitated their reuse by creating routines for solving mathematical problems and other functions that were independent of the actual values in a particular instance of problem.

The original architecture of the Mark I did not lend itself well to the subroutine concept. The instructions were stored on paper tape with no provisions for branching or jumping to a different part of the program. Branching, when necessary, was performed manually with the system stopping and operators reconfiguring for the branch.

In 1946 Bloch built a paper tape sequencing unit that facilitated branching. The unit could access 10 subroutines of up to 50 lines of instruction each. The team created a library of proven routines pre-punched on paper tape and ready to be incorporated into programs, saving time and reducing coding errors.

Hopper was released from active duty in 1946, and became a Navy Reservist. She joined the Harvard faculty as Research Fellow in Engineering Sciences and Applied Physics, where she continued to support development of Aiken's Mark series computers.

Aiken's Harvard Mark III was built during 1946-1948 and delivered to the Navy in 1950. Among its innovations, the Mark III was a stored program computer with a magnetic drum memory for data and instructions while the computer was operating, and magnetic tape for long term storage.

To support programming of the Mark III, Aiken's team built a machine called the Instructional Tape Preparation Table. The device had built-in libraries of pre-written subroutines, coded using Hopper and Bloch's approach to resusable code. Programmers could insert a pre-written subroutine onto the magnetic tape with the push of a button.

In the post war years, Aiken welcomed visitors to the lab. Hopper's teaching background became a major public relations asset. She would lecture and give tours of the lab.

Hopper left Harvard in 1949 and went to the Eckert-Mauchly Computer Corporation (EMCC), founded by ENIAC desginers John Mauchly and J. Presper Eckert. Mauchly had a vision of computers being used beyond pure science for business and industry. In addition to Eckert and Mauchly themselves, three of the original six female programmers from the ENIAC project had were part of the new enterprise - Betty (Snyder) Holberton, Betty (Jennings) Bartik and Kathleen McNulty.

EMCC's flagship computer offering, UNIVAC, offered some substantial advances over the Mark I and even the later Mark II and III. It was a fully electronic vacuum tube computer that operated more than 1,000 times faster than the Mark I. It was a stored program computer with five times the storage of the Mark II. One of UNIVAC's more exciting features was the use of magnetic tape for input and output. The tape system could read about 400 words a second, many times faster than the paper tape system of the Mark I.

It was while working with UNIVAC that Hopper did some of her most important work on the development of compiled programming, at the time called automatic programming.

At EMCC in the summer of 1949, Holberton introduced Hopper to the use of flow charts. She also introduced Hopper to C-10, the instruction code for the UNIVAC. C-10 was conceived of by Mauchly and Holberton. It substituted single letter names for computer functions - a for add and s for subtract. Hopper set to work developing a library of subroutines for UNIVAC.

Hopper had a great admiration for Holberton and credits her for early inspiration in the development of foundational programming concepts. She felt that Holberton's contributions had not received proper acknowledgement.

"Everybody's forgotten that she wrote the first program that wrote a program," Hopper told Pantages in 1980. "She wrote that sort-merge generator, and what she did was feed in the specs for the data you were handling and the keys and that sort of thing, and then it generated the sort program for that specific data. That's the first time to my knowledge that anyone used the computer to write a program. Betty did that. I don't think she's ever fully received the credit for what she did in that case."

In February 1950, EMCC was bought by Remington Rand (later Sperry Rand and now Unisys). Now part of a large corporation, the UNIVAC team had less intellectual freedom. Remington Rand was also an environment less friendly to women, and Holberton soon left.

Hopper developed a compiler for UNIVAC, named A-0, believed to be the world's first, between 1951-52. She presented her paper The Education of a Computer in May 1952 at a meeting of the Association of Computing Machinery (ACM). The paper introduced the concept of automatic programming, articulating a vision of a high level programming language in which in which a programmer expresses the required functionality and the subroutines are automatically assembled by software into a working computer program.

"The programmer may return to being a mathematician," Hopper wrote. "He is supplied with a catalogue of subroutines. No longer does he need to have available formulas or tables of elementary functions. He does not even need to know the particular instruction code used by the computer. He needs only to be able to use the catalogue to supply information to the computer about his problem."

A-0, understandably, did not produce optimized code. Some early criticism of Hopper's automatic programming concept focused on the fact that an experienced programmer could produce more efficient, faster code. Although the efficiency differences were in the range 10-50%, the results were quite significant in the time to process on UNIVAC. On the other hand, the savings in programmer time using A-0 were substantial, slashing 90% or more. Nonetheless, computer time was significantly more expensive than programmer time in 1952, and many of the mathematical problems being solved were highly iterative so that any potential savings in computer efficiency were rewarded many times over.

After the ACM presentation Hopper assembled a team of Remington Rand colleagues who supported continued compiler development in their free time.

The team began to make significant advances, completing A-1 in the winter of 1953 and A-2 in the spring. A-2 used the concept of pseudo-code to call subroutines. Pseudo-code was easier for programmers to understand and remember, and the compiler took on the job of translating the code into UNIVAC machine code. A-2 made two passes over the program, which enabled it to produce more optimized code. The compiler also featured automatic error checking and would produce error codes to assist programmers in debugging.

In July 1953 Hopper's Remington Rand team co-sponsored a workshop on automatic programming with the Census Bureau. About 90 UNIVAC programmers attended. As users from actual UNIVAC installations started putting A-2 to use, they began providing suggestions for improvement, reporting bugs in the subroutines, and contributing their own code to the project. A second workshop was held in December 1953 attended by more than 100 people, attracting not only UNIVAC users but interested IBM users as well.

Hopper's philosophies on information sharing, and advancements coming in the form of contributing to the larger body of research, reflected her academic roots. These philosophies contributed to the movement toward free and open source software that continues to this day.

Hopper had to lobby hard to get management at Remington Rand to recognize that automatic programming represented the future, and to fund the project and dedicate full time staff. Finally in early 1954, Remington Rand created the Automatic Programming Department with Grace Hopper as its director.

In the mid 1950s Remington Rand lost significant ground to IBM. Big Blue had won a massive government contract to build computers for a network of radar installations to protect against Soviet bombers. In addition to cash, the contract gave IBM access to a battery of new technologies, not the least of which was magnetic core memory.

In advocating for automatic programming Hopper continued to come up against entrenched dogma. Programmers pushed back on the idea that someday a compiler would be able to produce efficient, optimized code, insisting that only a skilled programmer writing in machine code would ever be able to deliver the goods.

At an automatic programming symposium in May 1954, organized by Hopper, she became aware of the work of MIT's H. Halcombe Laning Jr. and Neal Zierler. The pair had developed an algebraic compiler capable of translating equations written in standard mathematical symbols to machine code. Hopper was inspired by their work and elevated her goals to design programming languages that opened programming to less technical people. The next iteration of the compiler, A-3 (later named MATH-MATIC), pushed pseudo-code further and incorporated equation processing ideas.

Meanwhile at IBM John Backus was hard at work implementing his own formula translating system named FORTRAN. Like MATH-MATIC, FORTRAN was inspired by Laning and Zierler's work at MIT. Backus also pushed hard to drive improvements in code optimization. FORTRAN was very well received and became the first programming standard to be implemented across different hardware platforms - including UNIVAC versions beginning in 1961.

Hopper's vision for automatic programming sought to go beyond the automation of equation solving to develop an environment in which business people could write programs to support data processing and decision making analytics. A key element to this vision was the use of English language words rather than mathematical symbols and arcane mnemonic abbreviations.

In January 1955 Hopper defined the specifications for the next generation of compiler, B-0. Among its innovations, B-0 used English verbs to define operations such as IF, GO TO, MULTIPLY and DIVIDE. B-0 also allowed programmers to assign English language names to variables; what had once been X1 could now be identified as SALES TAX PERCENTAGE in the source code.

B-0, renamed FLOW-MATIC for marketing purposes, was available beginning in 1958. Although FLOW-MATIC was quickly put to use by a number of high profile UNIVAC customers, including Westinghouse and the Navy Bureau of Ships, like MATH-MATIC the new paradigm was not without its critics. Programmers complained that the language was too verbose and compiling times too long. They also found fault with the notion that not every potential machine operation was captured by FLOW-MATIC.

Between 1955-1960 Hopper was engaged in an ongoing campaign to promote the virtues of automatic programming, publishing articles, speaking at events, and being active in the ACM. At the same time she continued to nurture the distributed network of programmers and users that contributed bug reports, suggestions and source code to the project.

By 1959, FLOW-MATIC was gaining adoption and it was becoming clear that automatic programming with business friendly syntax was part of computing's future. IBM was developing its own business offering named COMTRAN, and the Air Force had deployed its own FLOW-MATIC derivative named AIMACO. Not only did these programming languages help open up new markets for computer sales, they stood to save existing customers millions of dollars in gained programming efficiencies.

Seeing that even in its infancy the automatic programming effort was beginning to fragment, in the spring of 1959 Hopper began organizing a project to develop a common business programming language. This project, which brought together people from computer manufacturing, business, universities and the military would ultimately produce COBOL (common business-oriented language), which in its time was the world's most used programming language.

Charles Phillips, director of data systems research at the Department of Defense (DoD), agreed to sponsor the project. In May 1959 DoD hosted an inaugural meeting of the Conference on Data Systems and Languages (CODASYL) attended by a select group of representatives from government, business users and manufacturers. Hopper along with IBM's Robert Bemer were named as chief technical advisors to CODASYL's executive committee.

CODACYL brought Hopper and Holberton together again. Holberton even more than Hopper was a hands-on contributer to the development of COBOL, serving on the short-term committee throughout the process and editing the COBOL specifications document.

Hopper advocated strongly for core principles around the verbose, English language syntax that characterized FLOW-MATIC and held strong against efforts to incorporate mathematical symbols and other elements of the scientific programming languages.

In January 1960 the executive committee approved the COBOL report of the short-term committee and in April 1960 CODACYL published the official COBOL report.

On December 31, 1966, having achieved the rank of Commander, Hopper reluctantly retired from the Naval Reserve. She had served 23 years and was approaching 60 years of age, and the Chief of Naval Personnel had requested that she apply to retire.

However, she was soon recalled to active duty at the behest of Norman Ream. Hopper and Ream had been acquaintances at least as far back as the mid 1950s, when Ream, then at Lockheed, initiated a transition from IBM equipment to UNIVAC in order to leverage FLOW-MATIC. They had later worked together on the CODACYL executive committee.

Ream, now Special Assistant to the Secretary of the Navy, brought Hopper back on-board in August 1967 to lead an effort to standardize all non-tactical (non-weapon system) Naval programming languages. The great majority of Naval code fell within the non-tactical realm. As with other large bureaucracies, in the late 1960s the Navy was fast becoming reliant on information systems for all aspects of day-to-day administration from supply chain to payroll.

Both the Navy and DoD writ large recognized the value of reusable code written in compliant, standardized programming languages. A December 1964 DoD directive had addressed the need for standardized code and a year later a formal standardization initiative was started with the Air Force.

The American National Standards Institute (ANSI) approved the COBOL standard in August 1968. In November 1968 DoD adopted the standard. Although COBOL had been conceived as a standard, cross-platform language, it had already begun to fragment as vendors developed their own COBOL flavors. Code developed on one machine, would not necessarily run on another.

Initially Hopper's recall to active duty was to be for six months, but it soon became obvious that the task at hand would take years. For the next ten years (until 1977) she served as the director of the Navy Programming Languages Group for the Navy Office of Information Systems Planning. The first formal output of the Group was a manual titled The Fundamentals of COBOL.

The drive to standardization had many facets. Millions of lines of legacy code would need to be rewritten and new systems would need to be procured under rigid specifications. Furthermore, her vision of standardization not only included the use of standardized COBOL, FORTRAN and other major languages, but also a strict adherence to programming practices.

Hopper began to travel extensively, along with other members of the Navy Programming Languages Group. She became something of an ambassador for the adoption of COBOL and computing, visiting Navy installations, conducting trainings, speaking at conferences, and publishing in magazines and journals.

Hopper was promoted to commodore December 15, 1983 in a White House ceremony led by then President Ronald Reagan. The rank was later changed to rear admiral. The promotion made her the first woman naval officer to achieve flag rank, and she was also at the time the oldest active duty naval officer.

Hopper retired from the Navy for the second and final time in an August 14, 1986 ceremony aboard the USS Constitution.

She became a senior consultant with Digital Equipment Corporation (DEC), continuing to travel and lecture regularly.

September 16, 1991 then President George Bush presented Hopper with the National Medal of Technology. She was the first woman to receive the award. Although she was at this point not well enough to attend the ceremony, she submitted a written acceptance speech in which she said: "If you ask me what accomplishment I'm most proud of, the answer would be all of the young people I've trained over the years; that's more important than writing the first compiler."

Hopper died in her sleep on January 1, 1992 at the age of 85. She was buried at Arlington Cemetary with full military honors.


Beyer, Kurt W. (2009). Grace Hopper and the Invention of the Information Age. MIT Press ISBN 978-0262013109

Williams, Kathleen. (2012). Grace Hopper: Admiral of the Cyber Sea. Naval Institute Press. ISBN: 978-1612512655

Mitchell, Carmen L., The Contributions of Grace Murray Hopper to Computer Science and Computer Education. Dissertation, University of North Texas. 1994.

Pantages, Angeline. (1980). Oral History of Captain Grace Hopper. Computer History Museum. CHM Reference number: X5142.2009

Hopper, Grace (ca 1983), Commander Aiken and My Favorite Computer. In Cohen, I. Bernard et al (1999) Makin' Numbers: Howard Aiken and the Computer. MIT Press. ISBN: 978-0262032636.

Hopper, Grace (1952). Proceedings of the 1952 ACM national meeting. Association for Computing Machinery

Slater, Robert (1987). Portraits in Silicon. MIT Press. ISBN: 978-0262192620.

Ceruzzi, Paul E. (1998). A History of Modern Computing. MIT Press. ISBN: 978-0262032551

Marguerite Zientara (16 November 1981) Capt. Grace M. Hopper and the Genesis of Programming Languages," Computerworld.

Campbell-Kelly, Martin. Aspray, William. Ensmenger, Nathan. Yost, Jeffrey R. (2013). Computer: A History of the Information Machine. Westview Press. ISBN-13: 978-0813345901.

O'Connor, J. J. and Robertson, E. F. (1999) Grace Brewster Murray Hopper. MacTutor: School of Mathematics and Statistics University of St Andrews, Scotland.

Norman, Jeremy. Key Aspects of the Development of the Harvard Mark 1 and its Software.