Interactive FORTRAN

THE IF PROJECT

Political Atmosphere

At the time the IF Project was conceived in the spring of 1972, even though the Computing Centre personnel were well educated and highly skilled, the Centre was deemed to constitute a service organization exclusively -- anything that had the semblance of research was considered to rest entirely within the domain of the academic faculty. As a consequence, there was a considerable sense of trepidation within the Centre of mounting any project that might come under attack as crossing the boundary into the academic domain.

In order to avoid any fallout from a perceived boundary transgression, the Incremental FORTRAN Compiler project was presented as an opportunity for the fledgling Computer Science department to carry out compiler research using the technical skills and manpower that would be provided by the Computing Centre. The Computing Centre, in turn, would use the results of the research to benefit the academic community through provision of enhanced service support. In essence, then, a perfect marriage.

The person promoting the project on behalf of the Computing Center was the late Alvin Fowler, who at that time (most likely?: Chief Analyst -> Associate Director -> Director) held the position of Associate Director. Once the negotiations with the C.Sc. department were concluded, Al, in consultation with senior staff, gathered the full and part-time personnel who would provide the support for implementation. And thus, in May 1972, the project began.

Project Goal

Originally the idea was to produce a FORTRAN IV compiler that was capable of compiling incrementally: that is, take changes made to the source code and immediately adjust the internal representation of the program to incorporate those modifications.

Dr. Peter Hibbard from the C.Sc. department took the lead in drafting specifications for the compiler, and Ron Hall coordinated a team consisting of Tony Buckland and three undergraduate students, Johan de Kleer(http://www.parc.com/about/management/dekleer.html), Bruce Erickson, and John Lau, working on the implementation (IBM 360 Assembler Language) over the summer of '72.

By the end of the summer things were beginning to take shape with a parser capable of producing semantic code, along with support for interpretive arithmetic statement execution. While Johan was able to continue part-time on the project as it moved into the fall, the other two students were required to return to their 4th-year studies full-time. To compensate for the drop in implementation support, Dennis O'Reilly, who had been recently hired at the Centre, was assigned then to the project. By mid-fall, FORTRAN free-format I/O was operational, and the system was capable of running in a line-by-line calculator mode, or "Immediate Execution Mode" as it was termed.

Unfortunately, achieving the original goal of incremental compile was proving to be more difficult than anticipated. Dr. Hibbard had many good ideas and worked diligently on producing specifications for the compiler, but there remained many unresolved issues regarding the precise way in which the compiler was to successfully carry out the incremental adjustments. As well, there were concerns about the amount of work that would be required to provide robust implementation for the incremental compile. By this time, however, it was possible to get some measures on the compile speed, and it was determined that a non-incremental compile of edited subroutines would be sufficiently fast that users would not normally suffer any noticeable post-edit wait time for a re-compilation. In the interest of proceeding with confidence that the project could be successfully completed within a reasonable timeframe, the Computing Centre made a decision to abandon the goal of incremental compile. Thus the Incremental FORTRAN Project then became the Interactive FORTRAN (IF) Project.

Over the next few months, an interface to the MTS Editor was added to allow editing of source code, and the compiler functionality was expanded to cover the full spectrum of the FORTRAN IV language. Debugging command controls were added, and this allowed a similar set of capabilities to those provided by SDS, although they were more tightly tied to debugging FORTRAN programs (e.g., stepping was based on FORTRAN statement divisions, breakpoints were settable by source-code line number, and execution suspension resulting in return to immediate execution mode which allowed interrogation and setting of variable values prior to resumption of execution). As well, the code interpretation provided extremely rigorous checking during execution for attempts to use an undefined variable, for instances in which a subscripting reference would fall outside the bounds of an array, and attempt to modify a DO-loop control variable within the loop, along with a number of other checks for things that could result in invalid execution within a FORTRAN program.

In the spring of '73, following internal testing at the Computing Centre, IF was released to the MTS user community for test use.


More to come later. - rhh