2007 will mark the 50th anniversary of the Fortran language, which was first introduced in 1957. The British Computer Society is sponsoring a retrospective on Fortran in January – perhaps there will be a US event as well.
Like most programming languages, Fortran, or FORTRAN as it was known back then, has gone through a lot of changes. From 1957 until 1966, when the first ANSI standard for Fortran was approved, various vendors and compiler writers had their own idea of what Fortran ought to be, and with different names. There was FORTRAN II, FORTRAN D, and many more. Some constructs from those old versions are gone from modern Fortran, such as the FREQUENCY statement (used to give the compiler an idea of how often a section of code would be executed) and SENSE to read those switches on the front panel.
1966 brought us ANSI X3.9-1966, otherwise known as FORTRAN IV (or FORTRAN 66). The text of the standard was a whopping 36 pages, but it was a revolution in technical programming as it was now possible to write and share lots of code knowing that it was likely that others, with computers from different vendors, could use the code too.
The next revision of the Fortran standard was FORTRAN 77, or formally, ANSI X3.9-1978. Here, 1977 was the year that the standard was frozen and 1978 the year it was approved. The language had grown quite a bit, largely by formalizing extensions that many vendors had added to FORTRAN IV, such as OPEN and the CHARACTER datatype. The FORTRAN 77 standard included both a full and subset version of the language, the subset intended to be easier to implement. In practice, everyone ignored the subset and the idea was dropped from future standards. The FORTRAN 77 standard, excluding the subset, was 260 pages.
Soon afterwards, work started on the next iteration of the language, initially called FORTRAN 88 (given that it had been eleven years between the previous two standards, another eleven seemed appropriate.) As time dragged on, 88 turned to 8X and it eventually became known as Fortran 90 (ISO/IEC 1539:1991(E)). This is when FORTRAN formally became Fortran and the language added lots of concepts from other whippersnapper languages such as Ada. Fortran 90 was much more language invention than standardization of existing practice, and it took a few years for most compiler vendors to fully support it. The printed standard numbered 388 pages.
At this point, the Fortran standards committee realized that it would be best to update the language in a minor way in a few years, to accomodate issues brought up during the past standardization, and then to schedule a big revision some years after that. Fortran 95 (ISO/IEC 1539-1:1997) was a minor revision that did not add a lot of new features, but it did borrow constructs such as FORALL from a dialect called High-Performance Fortran that never really did take off.
The next big change to the standard was called, for a long time, Fortran 2000. Well known computer science researcher C.A.R (Tony) Hoare once famously opined, “I don’t know what the programming language of the year 2000 will look like, but I know it will be called Fortran.”) Again, a lot of new invention went into this language and it was clear that the goal of freezsing the standard by 2000 would not be met. Eventually, it became Fortran 2003 (ISO/IEC 1539:2004) and the printed standard stood at 585 pages – some sixteen times the size of FORTRAN IV.
The current state of things is that nobody has yet produced a full-language Fortran 2003 compiler. NAG is probably going to be first with a “reference implementation”, as they have done so in the past. IBM is well along the way in their xlf compiler, and of course Intel has made significant progress as well. But it is likely to be several years before full Fortran 2003 compilers become commonplace.
And what’s next? The Fortran standards committee is already firming up the feature set for what is being called Fortran 2008. One of the proposed features is Co-Array Fortran, a way of extending the language to provide parallel processing semantics in a way rather different from the industry standard OpenMP. Interesting times are ahead.
(Originally posted at Intel Developer Zone, copied with permission)