Browse Prior Art Database

Early Days of FORTRAN: Technological Review of the Early FORTRAN Compilers

IP.com Disclosure Number: IPCOM000129431D
Original Publication Date: 1984-Jan-01
Included in the Prior Art Database: 2005-Oct-06
Document File: 5 page(s) / 28K

Publishing Venue

Software Patent Institute

Related People

FRANCES E. ALLEN: AUTHOR [+2]

Abstract

When I joined the IBM Research Division in July 1957 -- 25 years ago - - FORTRAN had just come out. My first assignment at IBM was to teach FORTRAN to the scientists and engineers. We wanted to convince them that it was a usable language. At the time the computing climate was that everything had to be done efficiently. The primary issue in writing a program was the efficiency of the program on every single task. For example, one of the games played at that time was not Pac- Man, but how much function could be put on a one-card loader. Getting people away from the notion that they had to optimize and hand code -- very carefully hand code -- every line they wrote, and convincing them to use a high-level language, involved not only educating them in using that language (which was my first assignment), but also convincing them that the code produced would be efficient.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 16% of the total text.

Page 1 of 5

THIS DOCUMENT IS AN APPROXIMATE REPRESENTATION OF THE ORIGINAL.

Copyright ©; 1984 by the American Federation of Information Processing Societies, Inc. Used with permission.

Early Days of FORTRAN: Technological Review of the Early FORTRAN Compilers.

FRANCES E. ALLEN

(Image Omitted: Author's Address: F. E. Allen, T. J. Watson Research Center, P.O. Box 218, Yorktown Heights, NY 10598. * See "A Technological Review of the FORTRANI Compiler" in

NCC Proceedings, 1982, pp. 805-809.)

When I joined the IBM Research Division in July 1957 -- 25 years ago - - FORTRAN had just come out. My first assignment at IBM was to teach FORTRAN to the scientists and engineers. We wanted to convince them that it was a usable language. At the time the computing climate was that everything had to be done efficiently. The primary issue in writing a program was the efficiency of the program on every single task. For example, one of the games played at that time was not Pac- Man, but how much function could be put on a one-card loader. Getting people away from the notion that they had to optimize and hand code -- very carefully hand code -- every line they wrote, and convincing them to use a high-level language, involved not only educating them in using that language (which was my first assignment), but also convincing them that the code produced would be efficient.

One of the ways the Research Laboratory convinced people to use this language was an edict requiring them to use it' People were soon convinced that it was an effective way of solving their problems, because one of the basic goals of the original FORTRAN compiler project was to produce code very close to hand code -- in fact, as good as hand code in many instances.

One example produced essentially perfect code for the 704. The code produced has, in many instances, not been equaled since. Figure 1 is an example of a FORTRAN program with a doubly nested loop in which we are storing an element from array B into an element in array A. What one might expect is that we will first enter the outer loop and then the next loop in the code.

Figure 2 shows what was actually produced by the FORTRAN ~ compiler: the 704 code compiled for that array move. FORTRAN stores arrays in columns, and the first compiler stored its arrays backward. So A is stored as 100 locations with the first A being at the highest address in storage; the same is true for B, of course. The code itself starts by loading register 1 with value 1. The next four instructions are the single loop produced by the compiler. What is really happening here is that a double loop has been compiled into a single loop. B is then loaded into the accumulator (clear and add an element from B) and is stored in A.

(Image Omitted: Figure 1. A FORTRAN program storing array 13 into array A.)

(Image Omitted: Figure 2. 704 code compiled for the array move (see Figure 1).)

(Image Omitted: Figure 3. The compiler structure.)

The index register is changed by 1, and a...