Geographic Connection to Pennsylvania: Philadelphia, Philadelphia County
Computer scientist John Backus invented the Fortran programming language.
Born in Philadelphia in 1924, John Backus was given every advantage in life by his wealthy and affluent parents. Despite this, he struggled with school, joined the army and dabbled in chemistry, engineering, medicine, radio, and math before finding a job with IBM. Years later Backus said “Programming in the early 1950’s was really fun. Much of its pleasure resulted from the absurd difficulties that ‘automatic calculators’ created for their would-be users and the challenge this presented.” Once with IBM, Backus created an assembly language known as speedcoding, proposed and created the first high level computer language, Fortran, and created the Backus-Naur form. After winning many awards and prizes Backus eventually moved to Ashland, Oregon where he died on March 17, 2007.
John Backus was born into a wealthy family on December 3, 1924 in Philadelphia. Though born in Philadelphia, Backus grew up in Wilmington, Delaware and attended the Hill School in Pottstown, Pennsylvania. Unfortunately, Backus’s school records show that he was not a model student. The records from his time at the Hill School are marked with bad grades and poor attendance. Reminiscing on his adolescence, Backus said in Out of Their Minds: The Lives and Discoveries of 15 Great Computer Scientists (source for most of the subsequent quotations), “I flunked out every year. I never studied. I hated Studying. I was just goofing around. It had the delightful consequence that every year I went to summer school in New Hampshire where I spent the summer sailing and having a nice time”. Even with the setbacks at the Hill School, Backus graduated in 1942 and was accepted to the University of Virginia.
Backus’s father was, at one point, a chemist and pushed for his son to follow suit. Backus planned to major in chemical engineering, and even enjoyed the theoretical aspects of the work, but the lab work did not satisfy him and before the end of his first year his attendance had dropped to once a week. School officials took note, and expelled Backus. After his expulsion, Backus was drafted into the U.S. Army in 1942.
Once in the army, Backus worked his way to the rank of Corporal while serving at Fort Stewart, Georgia. While at Fort Stewart, he was in charge of an anti-aircraft crew until he was tasked to take an aptitude test. The army decided that Backus was more suited for engineering and enrolled him at the University of Pittsburgh for pre-engineering classes from September 1943 to March 1944. By way of another aptitude test, Backus was also found to have talents in the medical field and was moved to the Haverford College to study medicine. Backus said “My friends were shipped off to the Battle of the Bulge and I went to Haverford College to study premed.”
As part of the pre-med program, Backus and others were sent to a hospital in Atlantic City to work. While there, it was discovered that Backus had a bone tumor in his head. He had to have an operation to remove the bone and to have a metal plate inserted instead. His medical career moved him to Flower and Fifth Avenue Medical School (now known as the New York Medical College) in New York during March of 1945. After only nine months, Backus decided medicine wasn’t for him. Backus’s time at medical school is summed up when he said: “I hated it. They don’t like thinking in medical school. They memorize – that’s all they want you to do. You must not think.” After having another surgery to replace the first plate in his head, he left the army in May 1946.
Backus stayed in New York City after leaving the army and he became very interested in building a Hi-Fi set. After doing some research, Backus realized that the Hi-Fi set he wanted did not exist. To fix this problem Backus enrolled at the Radio Television Institute. While working with an instructor on calculations for the curve of an amplifier, Backus realized that not only was he interested in math; he was also good at it. Shortly after, Backus enrolled at Columbia University to study mathematics and by the end of spring 1949 Backus had graduated with a BS in mathematics.
During the spring before he graduated, Backus went on a tour of the IBM computer center in New York City. During the tour he was shown the Selective Sequence Electronic Calculator (SSEC). Making small talk with the tour guide, Backus mentioned that he was looking for a job. Surprisingly, the tour guide informed Backus that he should speak with the director. Backus recalled, “I said no, I couldn’t. I looked sloppy and disheveled. But she insisted and so I did. I took a test and did OK”
That impromptu test led Backus to the next chapter of his life. He found himself working for IBM on the SSEC. Backus described his work on the SSEC: “It was fun to work on that machine. You had the whole thing to yourself. You had to be there because the thing would stop running every three minutes and make errors. You had to figure out how to restart it.”
The reason the SSEC needed constant maintenance is because the SSEC occupied the entirety of a large room. When it is said that an early machine had a bug, sometimes there really was a bug in the machine. These machines had tens of thousands of vacuum tubes, open wiring and large openings for people to use to make repairs. Sometimes, a piece of code not executing properly simply meant that a bug had shorted out one of the thousands of electrical or mechanical parts. There were also little quirks with the SSEC such as every now and then, the machine would read the punch tape backwards. Punchtape is pretty much exactly what it sounds like. A long piece of paper (tape) connected to form a large loop, with hundreds or thousands of little holes in it that the computer would “read” to execute commands. After three years of working on the SSEC, Backus had learned a lot about the world of computers, and he made his first contribution to the computer world, Speedcoding.
To understand speedcoding, one must first understand how a computer performs computations. Computers are limited by their memory, or how much information they can store at any given time. In the 1950’s, a computer’s memory was virtually non-existent meaning that programmers had to manually “read-in” data via punch cards or tape. This was a very cumbersome task and required long hours of work. Working with Harlan Herrick, another IBM employee, Backus created a way to perform floating point calculations or, in the most basic terms, carry the zeros of a number. For instance, if a computer could only store three numbers, a programmer would have to identify to the computer that the numbers that needed manipulation were, for instance, 1, 2, and 3. Now as simple as that is, these numbers could stand for the number 123, 1.23, or 123,000. Speedcoding allowed the programmers to scale these numbers. Meaning if 123 was entered in with a scale of -1; the computer would know the user meant 12.3. Or if 123 was entered in with a scale of 1 the computer would know the user meant 1230. This new form of coding greatly enhanced the speed at which programmers could write and execute code. This development led Backus to his next project, Fortran. “It would just mean getting programming done a lot faster. I had no idea that it would be used on other machines. There were hardly any other machines.” This was the mindset of John Backus thinking back on his next project years later. In December 1953, he wrote a memo to Cuthbert Hurd, his superior at IBM, suggesting the design of a new programming language for the IBM 704. This new language, later known as FORmula TRANslation or Fortran, is why computer processing has come so far so quickly.
Backus wrote a memo to Cuthbert Hurd, his then boss at IBM, in December 1953 suggesting the design of a new programming language for IBM’s newest computer, the IBM 704. Hurd was initially all for the development of this new language but IBM’s consultant John von Neumann, was not. Backus commented on von Neumann’s objections: “He didn’t see programming as a big problem. I think one of his major objections was you wouldn’t know what you were getting with floating point calculations. You at least knew where trouble was with fixed point if there was trouble. But he wasn’t sensitive to the issue of the cost of programming. He really felt that Fortran was a wasted effort.” After talking with both von Neumann and Backus, Hurd approved the project despite the objections.
Backus quickly constructed a team of young mathematicians and experienced computer programmers. In a few months time, the team knew what they had to do. Their goal was to create a computer language that would be more efficient than its predecessors. Backus and team knew that developing this language would not be difficult. The problems of the project would come into place while they were working on the most essential part of the language, the compiler. The compiler in any language always performs the same function, translation. A computer can only “understand” machine language. Machine language, also known as binary, is long strings of zeros and ones. Programmers write code which is a sequence of characters and symbols that form the directions for how a program operates. The programmers’ code is then translated by the compiler into machine language to actually perform the different operations spelled out in the programmer’s code. The key feature to any compiler is the parser. The parser is the part of the compiler that parses, or takes apart, the code for the machine to “read” and “understand.” Think of the parser like a sentence diagram from any English class. The parser takes the commands, or verbs, and identifies which variable, or noun, it is directing an action towards. The parser does the same with the other parts of the code, or sentence. During 1954, Backus and his team visited the soon to be customers of the IBM 704 to gain user input. At this time Backus felt sure that the compiler would be finished in six months time. Two years later, the final product was finished.
By April 1957, Westinghouse was Fortran’s first commercial users, though there were around 80 other companies that used it for calculations in their respective industries. There were bugs in the initial release but after a few patches, all the bugs were eliminated.
In May 1958, just over four years after starting the Fortran project, Backus quit working with Fortran and while still with IBM, also served on an international committee of prominent computer scientists. During a meeting in Zürich, the committee decided to improve Fortran and create a single, standardized language. They eventually created Algol, the International Algebraic Language.
Algol never had the success that Fortran had, but it did provide several features that Fortran did not incorporate. Algol introduced two new ideas, recursion and local variables.
In programming, like mathematics, a variable is a placeholder for something else. In languages before Algol, variables were considered global, which means that once a variable had a specific meaning assigned to it, you could no longer use that variable for anything else in the program. With tens of thousands of lines of code, not being able to use the same variable twice became an issue. Algol allowed for a programmer to localize the use of a variable. A programmer could put restraints of sorts on which segments of the code would use each specific variable, greatly reducing the number of variables used.
By implementing local variables, recursion, recently introduced by John McCarthy, could be used in Algol. Recursion is fairly simple, but at first look seems to be a circular argument. Out of their minds the lives and discoveries of 15 great computerscientists gives a very good explanation of recursion. “Suppose Anne is the mother of Barbara who is the mother of Carol who is the mother of Donna. Barbara is Carol’s maternal ancestor, since she is Carol’s mother. Anne is also Carol’s maternal ancestor, since she is a maternal ancestor of Barbara. Now, that we have established that Anne is a maternal ancestor of Carol, we see that Anne must be a maternal ancestor of Donna as well.” As we can see recursion allows the programmer to break a larger problem into smaller problems, create a way to solve the individual problems, and then put them back together again.
With the creation of Algol, in its many forms, Backus quickly became frustrated that there was no clear way to explain computer languages. So employing a formalism called context-free languages, he quickly put a paper together for the UNESCO meeting on Algol in Paris during June 1959. Backus gave a short explanation of how he began working with Naur: “Of course, I had it done too late to be included in the proceedings. So I hand-carried this pile to the meeting. So it didn’t get very good distribution. But peter Naur read it and that made all the difference.” After reading Backus’s paper, Naur improved on Backus’s suggestions and together they created what is now known as the Backus-Naur form, or BNF. BNF proved its usefulness very quickly by allowing programmers across the world to easily describe the syntax of programming languages. This allowed people to learn new languages as well as debug others code with relative ease.
In 1975, Backus was awarded the National Medal of Science, yet with all of his contributions to computer science, Backus was still not content. He began looking over Fortran and was irritated that while running a program, the programmer really did not know what was going on with the numbers. Backus decided that he wanted to develop a way for programmers to state what they wanted done without getting bogged down in the issues of how it was done. During Backus’ 1977 Turing Award lecture, he introduced this topic to the general computer science community. The lecture is entitled “Can Programming Be Liberated from the von Neumann Style?”
The name of the lecture was not meant to attack von Neumann, but instead to draw upon von Neumann’s way of looking at computers as processors that stored information that is retrieved, updated and then returned back to memory. Backus felt that this type of programming was far too cryptic. In his lecture, Backus introduced the concept of Functional Programming, or FP. FP was created by Backus in order to give programming more clarity. In FP, there is no “hidden state” of variables. This means that any person, capable of reading the code, could rather easily perform the mathematical computations with the computer. In a von Neumann style of programming, the variable is passed in and out of memory, each time being modified and replaced, meaning that a person would have to be able to perform all of the calculations in their head. FP and the FP style of programming never fully caught on for several reasons. This type of programming was not very efficient because it took a very long time to code it in an effective way. Also this style of programming was not suited to all industries.
John Backus continued working with IBM and stayed connected to the world of computer science until 1991 when he retired. After he retired, he withdrew from not only the world of computer science but of science in general. Backus began to read the introspective writings of various authors as well as meditating. On March 17, 2007, John Backus passed away in Ashland, Oregon.