The FORTRAN compiler and the work by the team was divided by operational tasks. The compiler first performed an initial scan, or parsing, of the higher-level language, the algebraic symbols, and English abbreviations. Next, it performed a complex analysis of the program so that the compiler focused most of its energies on automating the working heart of the program that is, the most frequently repeated operations in the program. Then, the compiler had to figure out how to allocate its compiling instructions to run on the machine in a way that used a minimum of computer time. And, in the last step, the compiled program had to be assembled into machine code.
The FORTRAN compiler accomplished all this not with brute force, but with an elegant efficiency that seemed to lend the software a certain life of its own, if not intelligence. By early 1957, when the FORTRAN project was in the home stretch and the team got compiled programs back from the computer, they were often amazed. The compiler had made what Backus called surprising transformations in the programs being compiled, altering the programming expressions and the order of computation. As they combed through the changes the compiler had made, they could see that the compilers work was efficient. But, Backus said, the compiler took steps that we would not have thought to make as programmers ourselves. In fact, the FORTRAN team was mainly observing the work of a well-designed, complex piece of software, following general rules and specific instructions embodied in the programmers algorithms to accomplish its appointed task. Still, seeing the FORTRAN compilers handiwork struck members of the team as a revelation that software was a special medium. It was just amazing, the interaction of the programming instructions, almost as if the compiler was a living thing, Ziller recalled.
It is often said that the best software designers and the best programmers have an uncommon capacity for two different kinds of reasoning conceptual and procedural thinking, high-level and low-level work. FORTRAN had both, in large doses. The language itself was a high-level, conceptual triumph. It not only made it far easier for people to program, but ensured FORTRANs longevity. Though initially intended only for the IBM 704, FORTRAN was wisely designed, at a high enough level, so that it divorced itself from a specific machine environment. The underlying machine could change to its hearts content and the programming language could sail along for 50 years, observed David Sayre.
Next Page > Part Three of FORTRAN The Turning Point


