Fortran: A few historical details
In 1954 computing history was made when an IBM team lead by John Backus produced Fortran, the first high-level programming language. Because its competition was with assembly languages, efficiency was a primary concern and so the first compiler was an optimising compiler. This focus on efficiency has continued throughout Fortran's history.
In 1958 the first major revision of the language by IBM, Fortran II, introduced the concept of subroutines. Development of the language continued, not just by IBM but also by many other manufacturers, resulting in conflicting implementations on different systems. Some of the non-IBM versions became very popular, for example WATFOR and WATFIV.
In 1962 the differences between the different versions lead to growing pressure for standardisation of the language. Vendors would not give up the right to make extensions, but users who wrote to the standard could expect their code to have a good chance of compiling and even running successfully on different systems. In 1966 this resulted in the publication by ANSI (the American National Standards Institute) of the first programming language standard, now known as Fortran 66.
Fortran 66 remained the standard Fortran over a decade before dissatisfaction with some of the limitations of the language lead to the publication, again by ANSI, of a revised standard in 1978. This was known as Fortran 77, because the technical content was agreed in 1977 even though the publication was a year later. Notable new features of Fortran 77 were the CHARACTER data type and the block IF (IF - THEN - ELSE - ENDIF). Fortran 77 was not a superset of Fortran 66, having numerous (mostly minor) incompatibilities. For example, the "extended-range DO loop" was completely deleted from the standard.
In 1980 the ANSI Fortran 77 standard was published by ISO as an International Standard, without change.
Recent History: Fortran Language Standards
After many false starts (Fortran 82, Fortran 8x, Fortran 88) and much controversy, a greatly revised Fortran standard was published by ISO in 1991. This was known as Fortran 90; again, because the technical content was fully decided in 1990. It was a proper superset of Fortran 77 - all of the Fortran 77 language was included in the Fortran 90 standard. At this point NAG enters the compiler scene, releasing a compiler for the new language immediately after publication of the new standard. Other compiler vendors followed over the following two years.
It was widely agreed that the long gap between the Fortran 77 and 90 revisions had been detrimental to the language. Furthermore, as Fortran 90 was such a major revision a number of mistakes were found in the first couple of years after publication. Therefore, it was decided to produce a minor revision of the language in 1995. Initially, it was suggested that this minor revision should have no additions at all, only corrections, but activities elsewhere in the Fortran community (in particular, the High Performance Fortran activity) convinced the committee that a small number of extensions would be helpful.
This resulted in the publication of the Fortran 95 standard; due to delays in the standardisation process however, publication did not take place until December 1997. Notable new features were elemental procedures, the FORALL construct (only useful on parallel machines) and default initialisation for user-defined types.
Unlike Fortran 90, Fortran 95 was not a superset; it deleted a small number of so-called obsolescent features. This incompatibility is more theoretical than real however, as all existing Fortran 95 compilers include the deleted features as extensions.
Even before Fortran 95 was finished, work was underway on discovering user requirements for a more major revision of the standard. Originally this was to have been Fortran 2000, but the perhaps inevitable delays in deciding its content meant that the schedule slipped and so it became Fortran 2003.
The Fortran 2003 standard was published at the end of 2004.
Notable new features include C interoperability and object orientation. Most Fortran 95 vendors are known to be working at integrating Fortran 2003 features into their compilers; due to the size and number of new features, it is not to be expected that the next releases of these compilers will contain all of Fortran 2003, but that they will gradually become full Fortran 2003 compilers over the next couple of releases.
Malcolm Cohen, Tokyo, October 2004