Programming's amazing Grace

One would almost be tempted to believe that Grace Murray Hopper was in fact a reincarnation of Ada Lovelace, the woman long considered…

One would almost be tempted to believe that Grace Murray Hopper was in fact a reincarnation of Ada Lovelace, the woman long considered to be the first queen of computing. Hopper's PhD in mathematics and physics from Yale University was a rare accomplishment for a woman in 1934. A decade later she worked as a programmer on Mark I, the first large-scale US computer and a precursor of the electronic computer.

Thus began her quest to move from the primitive programming techniques of the day to the use of more sophisticated compilers, convinced that a growing number of people could constructively use the computer if there were tools available that were more programmer and application friendly. Programming these early computers was an arduous and daunting task limited to a select few.

Hopper foresaw the development and refinement of new programming languages that could be used and understood by people who were neither mathematicians nor scientists. She was credited with devising the first compiler, a program that translates instructions for a computer from English to machine language, in 1952. This facilitated the first automatic programming of computer language, which freed software developers from having to write repetitive binary code.

This revolutionary advancement was a time and error-saving breakthrough, the next logical step being to devise a high level language. This would come with the development of the Flow-Matic programming language in the late 1950s and the Common Business-Oriented Language (COBOL) which emerged between 1959 and 1961 for UNIVAC, the first commercial electronic computer.

READ MORE

Like Ada Lovelace, Grace Hopper believed that computers could do more than arithmetic. Regarding her 1952 compiler she says, "I had a running compiler and nobody would touch it. They told me computers could only do arithmetic."

As a child she was very curious about how machines worked. At seven years old, she decided to find out how her alarm clock worked. Having taken the clock apart and being unable to put it back together, she continued her quest on every clock in the house.

Hopper's mother also had a love of mathematics and when she was young, special arrangements were made for her to study geometry, but she was not allowed to study algebra or trigonometry. At the time it was not considered proper for a young lady to study mathematics seriously, unless it was for perfecting the complex task of keeping the household accounts. Luckily for Grace though, her father believed that his daughters should have the same educational opportunities as his son.

After joining the United States Naval Reserve in 1943, she was assigned to the Bureau of Ordnance Computation Project at Harvard University where she worked on the Mark series of computers. She was the third person ever to program the Mark I computer, which she used to compute firing tables for weapons.

She obtained mathematical formulae for firing tables and wrote them as a series of instructions, which were then translated into binary code for the computer to understand. Although initially laborious, once the computer was programmed it could perform the same computations speedily and repeatedly, saving time in the long run. In 1946 she became a research fellow in engineering and applied physics at Harvard's Computation Laboratory and in 1949 she joined the Eckert-Mauchly Computer Corporation (developers of ENIAC) as a Senior Mathematician.

Here she began her pioneering work on UNIVAC I, the first large-scale electronic digital computer. Streamlining the task was high on her list of priorities, as she encouraged programmers to collect and share common portions of code in order to reduce errors, tedium and duplication of effort. By 1949 programs contained mnemonics that were transformed into binary code instructions executable by the computer.

This was further improved by Hopper's A-O compiler, which translated symbolic mathematical code into machine code, allowing the specification of call numbers assigned to the collected programming routines stored on magnetic tape. The big payback of this very first compiler was that thenceforth you could merely specify the call numbers of the required routines, the computer would find them on the tape and invoke them within a program. Retaining the belief that computer programs should be written in English, Hopper moved forward with her development of the B-O or FLOW-MATIC compiler for the UNIVAC. Designed to translate a language that could be used to perform tasks like automatic billing and payroll calculation, Hopper succeeded in making UNIVAC I and II understand 20 statements in English. The next step was to develop an entire programming language using English words, and she published her first compiler paper in 1952. Not surprisingly, the design of COBOL was greatly influenced by FLOWMATIC

We also have Grace Hopper to thank for those endearing computer terms "bug" and "debug". While working in a non-air-conditioned building in Harvard in 1945, on a humid summer day, the computer stopped. The problem was a failing relay, caused by a moth. "Inside we found a moth that had been beaten to death. We pulled it out with tweezers and taped it to the logbook. From then on, when the officer came in to ask if we were accomplishing anything, we told him we were `debugging' the computer."

With the final establishment of COBOL as a programming language in 1959, we have Grace Hopper to thank for programming, as we know it today.