Controversy, compromise, modernization: From FORTRAN to Fortran 90

by Jeanne Adams

(Reprinted from SCD Computing News, Summer 1994. Copyright 1994 University Corporation for Atmospheric Research)

From its early beginnings at IBM in the 1950s to the present, Fortran has had many ups and downs. Its popularity is increasing by leaps and bounds with the release of Fortran 90 as a standard. There is currently a renewed interest in Fortran due to these recent developments:

Fortran 90 has been adopted by the International Standards Organization (ISO) as an international standard. An identical version has been adopted as a national standard in the United States (and in other countries as well) under the auspices of the American National Standards Institute (ANSI). Fortran 90 has been chosen as the base language for the initial draft of High-Performance Fortran (HPF). Many Fortran 90 compilers are available for a variety of machines.

An early compiler for scientists and engineers

Before Fortran, people coded in assembly or machine language. Work on Fortran began in 1954; in 1957 an IBM research team headed by John Backus delivered the first Fortran compiler for the IBM 704 computer. This compiler was a vehicle for expressing scientific and mathematical computations for researchers who wanted to conduct research using a programming language similar to mathematical formulas, rather than using cumbersome machine-language expressions. Early on, the fundamental question had been whether a rich and robust language for mathematical equations could be sufficiently economical to make such a compiler feasible. The Backus team proved this to be true, and Fortran soon became popular among scientists and engineers. Today, 37 years later, this continues to be so.

FORTRAN in the 60s and 70s

Based on the work of Backus, study began on the first Fortran standard in 1962. Fortran was the first language to be processed in standardization activities for computer technology. The first Fortran standard (X3.9-1966) is often called FORTRAN 66 to distinguish it from later standards. This early standard was brief, only 36 pages long; FORTRAN 77, which includes a subset language, contains 300 pages plus about 70 pages of appendixes. (Fortran 90 has nearly 400 pages: although its text is not substantially longer than FORTRAN 77, Fortran 90 includes an index, several appendixes, and a long chapter on Fortran intrinsic functions.)

Work on FORTRAN 77 (X3.9-1978) became intense in the mid 1970s, when many new facilities important to the user community were being developed. The need for an improved input/output (I/O) facility was clear at the time, and new features for opening and closing files and inquiring about files were added. These were big steps in the development of Fortran as an important language for I/O. At the time, automatic array facilities were considered over a period of three to four years, when a complete proposal was developed. However, in the final consideration for Fortran 77, the array features were rejected.

Even in the early days, people recognized that Fortran could not grow and grow forever as it responded to new architectures and software. As a beginning step toward the deletion of obsolete features, one feature of FORTRAN 66 was removed in Fortran 77. That was "Hollerith," which was removed on the assumption that character data type would take its place. (This was a more radical approach than the standards committee has taken with Fortran 90: no features have been deleted, but candidates for deletion next time have been declared.)

A subset FORTRAN 77 was developed but not used intensively. This is because different extensions were chosen by each developer, which resulted in nonportable subset code. During the comment period for FORTRAN 77, there were 1,225 pages of public commentary--the largest outpouring of commentary to any standard at that time.

Work begins on Fortran 90

The work to revise FORTRAN 77 began almost before it was released in 1978. People felt that a third revision should be launched as soon as possible, and that the language should be modernized and be made more responsive to current machine architectures. There was considerable pressure to consider the many requests for new features, such as array syntax and semantics and data structures, that had been received during the comment period but rejected as premature. In many cases, initial proposals for Fortran 90 contained these very features.

Development of Fortran 90: Argument and compromise

The task of producing Fortran 90 began with many tutorials and user surveys to determine the needs of the user community for a modern Fortran (see Figure 1). From 1978-1985, the X3J3 Standards Committee laid the foundations for an architecture consisting of core Fortran and numerous extensions. The committee completed the first draft in 1985. Extensions included array syntax, optional arguments, modules and module procedures, and additional control constructs. When people realized that it might be possible to have a new
and modern Fortran standard, interest in the project soared, membership increased, and objections surfaced.
A brief history of Fortran 90
Many organizations that had never sent members to Fortran standards committee meetings began sending participants, and others transferred their membership to persons more politically than technically involved. A vocal minority made a considerable effort to kill or delay the standard, while membership soared to nearly 50 during this time. (Today, there are a scant 23 members completing the work on the Fortran 95/96 revision.)

About a dozen committee members wanted to keep Fortran simple and not responsive to some of the newer machine architectures. Among items that generated the most argument were the features addressing obsolescence and deletion. Requests were made to reduce the size of the standard; the FORALL statement/FORALL construct developed by X3J3 was one of the casualties of this effort, as well as the "core plus modules" architecture for the language.

Standards committees are charged to make special efforts to gain consensus before releasing a new standard, and so, for the next three years, committee members tried to agree upon a reduced language. Many compromises were struck in an attempt to achieve a more positive stand, but these made the language worse (in the opinion of many) while never successfully gaining greater consensus.

Meanwhile, Fortran 90 was being referred to as Fortran 8x, in hopes that by virtue of its release date it could be called Fortran 88. However, release was continually delayed by the numerous votes taken and the conflicts that arose. (Even at the close of the balloting period, 8-12 persons consistently voted "no.")

Eventually, the international community grew concerned with the potentially reduced contents of the new standard and supported the inclusion of features that are currently included in the final Fortran 90 standard. Three public reviews were held over four years to determine public reaction to some of these features.

It is interesting to note that although the international community approved the standard in 199() (naming it Fortran 90), it was not released until February 1991 due to publication problems; this was nearly two years before final approval in the United States. In September 1992, the U.S. finally accepted the version adopted by ISO, retaining FORTRAN 77 as an archival standard.

Fortran 90 is a superset of FORTRAN 77 and is compatible with it, since no FORTRAN 77 features have been removed.

F77: To withdraw or reaffirm?


Although Fortran 90 has replaced FORTRAN 77 as a standard in the international arena, the U.S. has put itself in the unfortunate dilemma of retaining two standards side by side. One ANSI rule states that any standard must be either withdrawn or reaffirmed in five years. Therefore, FORTRAN 77 is being considered for withdrawal or reaffirmation at this time. In March l994, X3J3 voted 21 in favor of removal and 6 for reaffirmation, sending a recommendation to Washington to remove FORTRAN 77 entirely as a U.S. standard. The vote could go either way when the parent committee (X3) considers this issue in the fall of 1994.

Originally, FORTRAN 77 was called "Fortran" and the U.S. standard for Fortran 90 was called "Fortran Extended." At the urging of the international community and X3J3, the parent committee X3 agreed to call it "Fortran 90" instead of "Fortran Extended." (How ever, requests for Fortran 90 through ANSI may result in a document labeled "Fortran Extended.") Details of the controversy over this standard would require a separate paper.

Efficiency, 1950-1994


An important characteristic of Fortran has always been that compilers produce efficient Fortran code. This has sustained its use for scientific and engineering projects from John Backus's time at IBM in the early 1950s to today. Some new features of Fortran 90, such as recursion, may produce less efficient code. However, the array features and optional arguments to subroutines are examples of features that will, in most cases, enhance the program's efficiency.

Jeanne Adams is chair of the ANSI committee that developed Fortran 90, and is a past chair of the International Programming Languages Committee of the ISO. She is a member of SCD's Computational Support Group and recently coauthored the book Programmer's Guide to Fortran 90 (New York: McGraw-Hill Book Company, 1990)