Following the short stories about the first computer and the first programmer, today we are going to tell you a few things about the first compiler and its inventor.
A compiler is a special software that translates instructions of a given high-level programming language into machine-code (the lowest-possible-level language and the only one that computer processors can “understand“).
Machine-language consists in a set of instructions (specific to a given type of processor) expressed as on-purpose-assigned binary (0’s and 1’s) numbers (to separate them from binary numbers expressing data or adresses) so remembering all of them to write a program was a seriously painstaking task for the brave few pioneers of the domain.
Hence arose the need for a tool offering programmers the possibility of using a language close to what they naturally understand (ie, a high-level language having statements in, say, English) which, once translated, would provide the computer with the equivalent in machine-code, the “natural” language for computers.
In one of our future articles we are going to give you some simple explanations on notions belonging to the art of computer witchcraft such as programming languages, operating systems, interpreters, compilers and on how they relate to one another.
But for now let’s just tell you that until the 50’s, early computers were programmed only in machine-language as high-level programming languages weren’t invented yet.
It is at this point in the history of computing that Grace Murray Hopper made her pivotal entrance.
Yes, it’s a “she” again!
And yes, there were many more great “she“-inventors than you thought (starting of course with the first and greatest of them all, “Mother Nature”).
Admiral Grace Hopper (1906-1992) was an American mathematician and computer scientist that pioneered the field of computer programming mainly during her outstanding career in US Navy advanced computer research labs but also during the few years she worked as civilian for a computer Company.
Perhaps due to the ties her family had with the military (her great-grandfather was a rear-admiral) she was keen to join the US Navy in WW-II and contribute to the war effort but she got rejected because of being underweight (about 7 kgs below the Navy minimum accepted weight of 54 kgs) and overage (34 years old was a too old age for enlistment).
So the never-give-up Grace alternately volunteered with the Navy WAVES (Women Accepted for Voluntary Emergency Service) in December 1943.
After a short training, in July 1944 she was commissioned a Lieutenant and assigned to the Bureau of Ordnance Computation Project at Harvard University where she joined the team of professor and Naval Reserve officer Howard Aiken to work on the world’s first large-scale, automatic digital computer, IBM’s Harvard Mark I that Aiken had conceptually designed inspired by Charles Babbage’s Analytical Engine we’ve told you about some 2 weeks ago.
In 1946 Hopper ended her active duty with the Navy (remaining a reservist) but continued her computing research at Harvard as a Research Fellow in Engineering Sciences and Applied Physics in the Computation Laboratory, working on Mark II and Mark III until 1949 when she accepted a post of senior mathematician with Eckert-Mauchly Computer Company.
Eckert-Mauchly Computer was purchased in 1950 by Remington Rand which in 1955 was acquired by the Sperry Corporation (remember Sperry? We’ve mentioned it and Unisys, its successor starting with 1986, when we told you the story about LZW compression algorithm).
But regardless of name and corporate changes, Grace Hopper remained associated with them until 1971 when she officially retired from Sperry.
It was during those civilian years that she invented the first compiler.
Eckert-Mauchly Computer and its successors developed a series of computers under the name “UNIVAC” (standing for UNIVersal Automatic Computer).
From this family, the UNIVAC I remained particularly notorious for at least 2 reasons.
One of the reasons is that an UNIVAC 1 (built for the U.S. Atomic Energy Commission) was used by CBS television to get a prediction on the result of the 1952 presidential elections in the USA.
That was the first time in history when a computer was used for such an original purpose and had such large public exposure.
The CBS news team included Walter Cronkite and a mathematician from the University of Pennsylvania (named Max Woodbury) was assigned to write the necessary program for the UNIVAC 1.
In the evening of Nov.04-th 1952 when voting results started to appear in CBS’s newsroom via teletype machines, the UNIVAC 1, using a sample of just 1% of the voting population, predicted a victory of Dwight Eisenhower over Adlai Stevenson as very highly probable.
But this prediction was so against the general mainstream impression that CBS management decided at first not to broadcast it and later they aired some ambigous suggestions that computer’s prediction would be in favor of Eisenhower but with low rate of probability.
The episode ended with the final results confirming computer’s prediction by less than 1% error margin. CBS had to make to their millions of viewers the embarassing confession that actually UNIVAC had made hours before a very accurate prediction which they didn’t broadcast. People started to become aware of computers (for some time the name “UNIVAC” equaling the word “computer” in USA as it appeared in many publications and movies) and on the next presidential elections in 1956 all american TV networks were using computer analysis.
But UNIVAC 1 is also famous due to Grace Hopper because the slim frail-looking lady mastered the huge sized machine (it occupied about 35,5 square meters and weighed cca. 13 tons) like no-one else.
Over the years she had written for it lots and lots of various subroutines (small blocks of code) handwritten directly in machine-code, which were covering quite a wide range of purposes.
And one day, “because she was lazy and hoped that the programmer may return to being a mathematician” to quote her own words, she saved the entire collection on a tape (the storage media of the time) and “tagged” each subroutine by assigning it a call number so the machine could find it on the tape.
On programmer’s side, symbolic instructions designated one (or a combination of) subroutine(s), each such higher-level symbolic language instruction being also able to accept specific arguments.
Hopper’s utility-program then generated the complete machine-code by copying and inserting the tagged subroutines where specified by the user via the instructions expressed as symbols.
And since everything started from a collection of pieces, she coined the term “compiler” for her invention as “to compile” means to put together (or compose from) different parts from different sources in order to create a new single entity.
A coherent entity, may we add, as not any gathering of pieces can be named a compilation.
So this is how the A-0 System was created (it is named “system” because it also inherently implies the language, ie the set of instruction symbols on programmer’s side, besides the “compiler” itself).
Interesting enough, despite the fact that programming clearly needed a revolution as hardware was evolving really fast (Mark I could do 3 additions per second and a multiplication took 6 seconds, while the UNIVAC could perform some 2000 operations per second) it took quite a long time until the first compiler was understood and accepted.
But neither the initial general rejection nor the initial discouragements from her own employer could stop Hopper. She continued to improve A-0 following her now famous credo “it’s easier to ask forgiveness later than to ask permission at first” so A-1 appeared followed by A-2, today some see it as the first open source program (source-code was provided for free and users were encouraged to improve it) and after two versions of A-3 came the B-0 (released under the commercial name FLOW-MATIC, which was the first programming language allowing English words.
Hopper was also key-contributor in the development of COBOL; her FLOW-MATIC compiler was used to help form a basis for it but her contributions were extensive and included the designs of translator programs that converted non-standard COBOL languages into the standard version.
The first specifications for COBOL were made available in 1959.
In 1967 she was recalled back into military active duty to help the US Navy standardize high-level computing languages and as it quickly turned out she was simply irreplaceble, the initial 6 months term was extended indefinitely.
Her (involuntary!) retirement took place in 1986 and it was celebrated in Boston.
At the time she was aged 80 (the oldest active-duty commissioned officer in the US Navy) and the ceremony was held aboard the USS Constitution, the oldest commissioned ship in the US Navy (189 years).
After retirement she was hired as senior consultant at Digital Equipment Corporation continuing to work tirelessly until about 18 months before she passed away in 1992.
Admiral Grace Murray Hopper was laid to rest with full military honors in Arlington National Cemetery.
In her honour the USS Hopper distroyer (launched in 1996) was named for her as was the Cray XE6 super-computer in 2010; a full list of medals, awards and recognitions would simply be too large to fit a blog article.
People have nicely nicknamed her “Amazing Grace” (paraphrasing the title of a well-known Christian song) and mass-media headlines named her “the woman who taught computers to talk“.
And since we’re mentioning nice details let’s not forget to tell you that among her numerous contributions, she also was the one who coined the term “debugging” (the term “bug” having been invented by Edison) when a moth trapped in a Mark II relay caused malfunctioning until it was removed.
We’re going to end as usual by recommending you to try our programs GdPicture.NET SDK for developers or PaperScan and ORPALIS PDF Reducer for the general public and see for yourself if they are as well-written/compiled and thouroughly-debugged as we think they are.
See you next week!