In 1953, John Backus headed a small group of programmers that was developing an assembly language for IBM’s mammoth 701. Known as Speedcoding, the language was roughly similar to UNIVAC’s Short Code. The Speedcoding effort had taken most of the year, and the Speedcoding interpreter and programmer’s manual had gone out to 701 users in the fall. It was now time to turn to the 704, then on the drawing board. Backus sent a memo to his boss, Cuthbert Hurd, suggesting the development of a compiler and higher-level language for the 704. Hurd, who ran the applied science department, approved the idea, and the FORTRAN, or FORmula TRANslation, project was established.
It was a modest effort. At first, it consisted of Backus, an easy-going young man with a master’s in mathematics from Columbia University, and Irving Ziller, another programmer. By the summer of 1954, three more programmers had joined the team, and they began running test programs on an IBM 701 in the IBM complex at 590 Madison Avenue, in Manhattan. From the beginning, the group concentrated on the compiler. “We simply made up the language [the commands that make up a user’s program] as we went along,” Backus recalled.
We did not regard language design as a difficult problem, merely a simple prelude to the real problem: designing a compiler which could produce efficient [binary] programs. Of course one of our goals was to design a language which would make it possible for engineers and scientists to write programs for the 704. We also wanted to eliminate a lot of the bookkeeping and detailed, repetitive planning which hand coding [in assembly language] involved.
Backus and his team began writing the compiler in early 1955, after a year and a half of preliminary work. Although Backus had originally estimated that it would take about six months to compose this internal program, the task turned out to be far more difficult than he had imagined, and it wasn’t until the summer of 1956 that the compiler was ready for troubleshooting. “The pace of debugging was intense,” wrote Backus. “Often we would rent rooms in the Langdon Hotel (which disappeared long ago) on 56th Street,
It was an exciting period; when later on we began to get fragments of compiled programs out of the system, we were often astonished at the surprising transformations in the indexing operations and in the arrangement of the computation which the compiler made, changes which we would not have thought to make as programmers ourselves.
In April 1957 – about three and a half years after the project had begun – the compiler was finished. Consisting of about 25,000 lines of machine code, it was stored on magnetic tape and distributed to every 704 installation. A small, handsomely produced programming manual went along with it; only fifty-one pages long, it described the high-level language and explained what each of its thirty-two instructions, such as PUNCH, READ DRUM, and IF DIVIDE CHECK, accomplished. But FORTRAN had a difficult childhood, and there were a lot of bugs to be ironed out in the field before it was reliable. As one programmer recalled:
Like most of the early hardware and software systems, FORTRAN was late in delivery, and didn’t really work when it was delivered. At first people thought that it would never be done. Then when it was in field test, with many bugs, and with some of the most important parts unfinished, many thought it would never work. It gradually got to the point where a program in FORTRAN had a reasonable expectancy of compiling all the way through and maybe even of running.
Nevertheless, FORTRAN was a landmark in the history of computing. Easy to learn and to use, it was an enormous advance over assembly languages like Short Code and Speedcoding. Now anyone with a logical mind and the desire could learn to program a computer. You didn’t have to be a specialist, familiar with the inner workings of a computer and its demanding assembly language. By using FORTRAN’s simple repertoire of commands, you could make a computer do your bidding, and the compiler would rapidly and automatically translate your instructions in to efficient machine code. The invention of FORTRAN was one of IBM’s most important technical achievements, and it certainly helped the company sell computers.
The original FORTRAN compiler ran only on the 704, but programmers went on to develop FORTRAN compilers for other IBM computers, and competing manufacturers, licensed by IBM, adapted FORTRAN to their own machines. Lo and behold, computers soon began speaking the same language – although a FORTRAN program written for one type of computer invariably had to be modified to run on another – and programmers no longer had to master a different language for every computer. Moreover, other computer languages began to appear. As a scientific and engineering language, FORTRAN wasn’t well suited for business and other applications, and many languages were devised to fill the gaps, such as COBOL (COmmon Business-Oriented Language); ALGOL (ALGOrithmic Language); and one of the most popular of all, BASIC (Beginner’s All-purpose Symbolic Instruction Code).