Fran Allen
Planning to be a math teacher but needing to pay off her student loans, in 1957Fran Allen took what she intended to be a temporary job as a programmer at IBMResearch. Her first assignment: teach resistive IBM scientists the newly inventedlanguage Fortran.
Instead of returning to teaching, Allen stayed at IBM for 45 years and worked on aseries of compiler projects, including the compilers for the STRETCH-HARVESTmachine and the ambitious but never-built ACS-1 supercomputer as well as herown PTRAN project, which developed techniques for automatic parallelization ofFortran programs and developed the Static Single Assignment intermediaterepresentation, which is now widely used in both static and just-in-time compilers.
In 2002 Allen was awarded the Turing Award for her “pioneering contributions tothe theory and practice of optimizing compiler techniques,” becoming the firstfemale recipient in the 40-year history of the prize. She was also the first womanto be named an IBM Fellow, IBM’s top technical honor. She is also a fellow of theIEEE and the Association for Computing Machinery and a member of the NationalAcademy of Engineering, the American Academy of Arts and Sciences, and theAmerican Philosophical Society.
Over her career, Allen has observed the changing role of women in computing,from her earliest days when women were specifically recruited by companies likeIBM for the new and ill-defined job of “programmer,” to later decades when thefield became largely male-dominated.
In our conversation she talks about what that transition was like as well as why itis important to increase the diversity in the field and how C has grievouslywounded the study of computer science.
Seibel: How did you get involved in programming? I know you started outplanning to be a math teacher but took a job at IBM in order to pay yourstudent loans.
Allen: To be a fully certified teacher in New York state required a master’sdegree. I had an undergraduate degree in mathematics, a minor in physics,and had taught for two years. Then I went to the University of Michigan andfocused very much on mathematics. At the University of Michigan, in orderto get a master’s degree, one had to take two courses outside one’s field, soI took a course on computing. Computer science didn’t exist then, in 1957.It was ten years later that it started to emerge seriously. But they had acouple of courses in the engineering school.
Seibel: What did they teach you?
Allen: They had an IBM 650 machine, which was quite a different machinethan what we’re used to today, and the students learned to program thatmachine. That involved not only learning all about the machine itself andcoding in, essentially, assembly language but also running your programs onthe machine. It was a really hands-on experience.
Seibel: So you would punch your deck, take it to the machine yourself, andfeed it through yourself?
Allen: Right. And then go and fix it. It was a drum machine—the drum wasconstantly spinning and that’s where your instructions were. So the way onegot it to run fast involved spacing the placement of the instructions on thedrum so as it turned the next instruction would be in the right place.
Seibel: Then the IBM recruiters came around. What was it about workingat IBM that appealed to you?
Allen: Well, I just needed a job. I had this debt and the recruiter came oncampus and it was in the right geographical area, back in New York state. SoI filled out an application and really didn’t realize much about what group Iwas interviewing with, the fact that it was IBM Research. I was kind ofclueless about that.
A few weeks later I got a call while I was interviewing for a faculty job at ateacher’s college in southern Illinois. I was really getting desperate—it wastime to get a job and I didn’t have one. So I got that call while I was on theroad and took the job, sight unseen, and got the papers to report at whatturned out to be the research laboratory in Poughkeepsie.
So I went there and got started as a programmer. IBM was expandingrapidly into computing and there weren’t any computer-science courses, sothey were hiring people from wherever they had found them.
Seibel: What kind of training did they give you?
Allen: Well, it was a kind of a learn-as-you-go, as I recall. There was anorientation to the company but I don’t recall there was any programmingclass per se, which is odd in retrospect. I suppose there were some classes,depending on what your background was. It was all very informal.
The first assignment I got, because I’d been a math teacher, was to teach thescientists and other programmers Fortran. I had joined in July of 1957 andFortran had been issued as a product on April 15 that same year. And IBMResearch—the group I was in—had an edict that by September all theprogramming had to be done in Fortran. That was the way to convince theirown people, just as they were trying to get outside people to, to use it.
Seibel: So these were scientists within IBM, doing their own scientificcomputation?
Allen: Yes. The machine they had was the 704 machine and that’s whatFortran was originally designed for and optimized to. They were used towriting in assembly code right on the machine, doing the same thing I haddone at the University of Michigan, running their own programs—schedulingsome time and running the programs. They did not believe that it would bepossible for any high-level language to do nearly as well as what they coulddo programming the machine itself.
Seibel: And that was the last time scientists adopted a new language,because they’re still using Fortran, right?
Allen: That’s right. Well, it was an unhappy class. But in the end, it was anamazing experience for all of us because Fortran was not only a language,but they had provided a compiler which was extremely advanced, and laidthe foundations for the structure of compilers today.
Seibel: The next big project that you worked on, that I know about, wasthe Stretch computer. Did you work on anything in between this time andthe Stretch project?
Allen: There were two projects that I was involved with between Fortranand the Stretch compiler. One of them was the Monitored AutomaticDebugging system, which was down at the assembly level for the 704. Ireally enjoyed that.
It was a very early operating system. There were three of us who workedon it. We installed some buttons on the computer, because you could dothat, at that time and one was a panic button. When the program appearedto loop one could just push the panic button. Then we wrote the debugger,and one of my tasks was to take the assembly-language program andproduce the column binary—rotate the output of it. When you used a cardreader the data was row-binary, which means each row contained the bitsthat were associated with the instruction, but on tape things were readdifferently, so it needed to be column-binary. I still have the program.
One of the things I remember really enjoying is reading the originalprogram—and considering it very elegant. That captured me because it wasquite a sophisticated program written by somebody who had been in thefield a while—Roy Nutt. It was beautifully done.
Seibel: What makes a program beautiful?
Allen: That it is a simple straightforward solution to a problem; that hassome intrinsic structure and obviousness about it that isn’t obvious from theproblem itself. I picked up probably a habit from that of learning aboutprogramming and learning about a new language by taking an existingprogram and studying it.