Computer scientist Lois M. Haibt may not be a household name. She’s described by her family as being a quiet, unassuming woman who enjoys tootling around on the internet, the occasional knitting or sewing project, and socializing with family and friends. As it turns out, though, she is one of the great minds who was on the team that developed FORTRAN (FORmula TRANSlation), an early computer language introduced by IBM in 1957. According to IBM, Fortran became one of the most widely used languages for technical work. A quick internet search yields that it is still considered the gold standard for technical work, and that Fortran 2023 was published in November of last year. It is the oldest computer language still in use.
J. W. BACKUS, R. J. BEEBER, S. BEST, R. GOLDBERG, L. M. HAIBT, H. L. HERRICK, R. A. NELSON, D. SAYRE, P. B. SHERIDAN, H. STERN, I. ZILLER, R. A. HUGHES, and R. NUTT, « The FORTRAN Automatic Coding System ». In Papers Presented at the February 26-28, 1957, Western Joint Computer Conference: Techniques for Reliability on - IRE-AIEE-ACM ’57 (Western), 188‑98. Los Angeles, California: ACM Press, 1957. https://doi.org/10.1145/1455567.1455599.
In that paper, there is a “Section 4 (Haibt) and Section 5 (Best)” part describing those sections of the original FORTRAN compiler:
[…] It is the task of sections 4 and 5 to convert this program to one involving only the three real index registers of the 704.
[…] This is done in section 5 (tag analysis) on the basis of information about the pattern and frequency of flow provided by section 4 (flow analysis) in such a way that the time spent in loading and storing index registers will be nearly minimum.
The fundamental unit of program is the basic block; a basic block is a stretch of program which has a single entry point and a single exit point. The purpose of section 4 is to prepare for section 5 a table of predecessors (PRED table) which enumerates the basic blocks and lists for every basic block each of the basic blocks which can be its immediate predecessor in flow, together with the absolute frequency of each such basic block link. This table is obtained by an actual “execution” of the program in Monte-Carlo fashion, in which the outcome of conditional transfers arising out of IF-type statements and computed GO TO’s is determined by a random number generator suitably weighted according to whatever FREQUENCY statements have been provided.
Backus, John. « A Restless Inventor ». In Out of Their Minds, by Dennis Shasha and Cathy Lazere, 5‑20. New York, NY: Springer New York, 1998. https://doi.org/10.1007/978-1-4612-0831-0_1.
Although Backus had led his elite team for four years in a complicated endeavor that required considerable stamina, he is consistently modest about his participation in the project.
It seems very unfair to me that I get so much credit for these guys [Robert Nelson, Harlan Herrick, Lois Haibt, Roy Nutt, Irving Ziller, Sheldon Best, David Sayre, Richard Goldberg, Peter Sheridan] who invented a tremendous amount of stuff. It didn’t take much to manage the team. Everybody was having such a good time that my main function was to break up chess games that began at lunch and would go on to 2 P.M.
After Lois Mitchell Haibt graduated from Vassar College as a mathematics major,
demonstrating a superior aptitude in math and science (but less so in the “fuzzy
subjects, like English,” she recalled), IBM offered her a job programming computers with a starting salary of $5,100, double was she was offered from Bell Laboratories. “I only had a vague idea what that [programming] was. But I figured it must be something interesting and challenging, if they were going to pay me all that money,” she said. She took the job, and by the fall of 1955 had joined the development team. “They took anyone who seemed to have an aptitude for problem-solving skills — bridge players, chess players, even women.” She would build the arithmetic expression analyzer of the compiler, despite the fact that “none of this theory existed. Nothing was known about parsing” —essentially taking a sentence of high-level code and chopping it up into constitute pieces of data that could be easily identified—“it was all invented at the time.”
And in chapter 14 “Building the First FORTRAN Compiler”, we find the same information as in the 1957 paper about the section 4 of that compiler.
Page 122, we can read about the FREQUENCY statement:
and FREQUENCY, which would optimize a program via frequency estimates provided by the programmer on the number of times GO TO, IF, and DO statements would likely execute during runtime (with IF and GO TO statements, the estimated frequencies for each “branch-point,” or control-transfer opportunity, needed to be specified).
I’m not aware of any similar controls in Fortran, although you can influence this to a minor extent with scopes (for instance by putting cold functions in a separate compilation unit).
According to Haibt, the team worked well together: “No one was worried about seeming stupid or possessive of his or her code. We were all just learning together.”