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.
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)