1-1 A Brief History of FORTRAN/Fortran *************************************** (Thanks to John Nebel for the nice description of a FORTRAN's user point of view) A note on names --------------- Both forms of the language name, FORTRAN and Fortran, are used. In this text, older versions (before and including 1977) of the language will be referred to as FORTRAN, post-1977 ones will be referred to as 'Fortran 90', 'Fortran 95' etc. The development of FORTRAN I ---------------------------- The first FORTRAN compiler was a milestone in the history of computing, at that time computers had very small memories (on the order of 15KB, it was common then to count memory capacities in bits), they were slow and had very primitive operating systems (if they had them at all). At those days it seemed that the only practical way is to program in assembly language. The pioneers of FORTRAN didn't invent the idea of writing programs in a High Level Language (HLL) and compiling the source code to object code with an optimizing compiler, but they produced the first successful HLL. They designed an HLL that is still widely used, and an optimizing compiler that produced very efficient code, in fact the FORTRAN I compiler held the record for optimizing code for 20 years! This wonderful first FORTRAN compiler was designed and written from scratch in 1954-57 by an IBM team lead by John W. Backus and staffed with super-programmers like Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Richard Goldberg, Lois Haibt and David Sayre. By the way, Backus was also system co-designer of the computer that run the first compiler, the IBM 704. The new invention caught quickly, no wonder, programs computing nuclear power reactor parameters took now hours instead of weeks to write, and required much less programming skill. Another great advantage of the new invention was that programs now became portable. Fortran won the battle against Assembly language, the first in a series of battles to come, and was adopted by the scientific and military communities and used extensively in the Space Program and military projects. The phenomenal success of the FORTRAN I team, can be attributed in part to the friendly non-authoritative group climate. Another factor may be that IBM management had the sense to shelter and protect the group, even though the project took much more time than was first anticipated. FORTRAN II, III, IV and FORTRAN 66 ---------------------------------- FORTRAN II (1958) was a significant improvement, it added the capability for separate compilation of program modules, assembly language modules could also be 'linked loaded' with FORTRAN modules. FORTRAN III (1958) was never released to the public. It made possible using assembly language code right in the middle of the FORTRAN code. Such "inlined" assembly code can be more efficient, but the advantages of an HLL are lost (e.g. portability, ease of use). FORTRAN IV (1961) was a 'clean up' of FORTRAN II, improving things like the implementation of the COMMON and EQUIVALENCE statements, and eliminating some machine-dependant language irregularities. A FORTRAN II to FORTRAN IV translator was used to retain backward compatibility with earlier FORTRAN programs. On May 1962 another milestone was traversed, an ASA committee started developing a standard for the FORTRAN language, a very important step that made it worthwhile for vendors to produce FORTRAN systems for every new computer, and made FORTRAN an even more popular HLL. The new ASA standard was published in 1966, and was known accordingly as FORTRAN 66, it was the first HLL standard in the world. FORTRAN 77 standard ------------------- Formally outdated many years ago, compilers for FORTRAN 77 are still used today, mainly to re-compile legacy code. FORTRAN 77 added: o DO loops with a decreasing control variable (index). o Block if statements IF ... THEN ... ELSE ... ENDIF. Before F77 there were only IF GOTO statements. o Pre-test of DO loops. Before F77 DO loops were always executed at least once, so you had to add an IF GOTO before the loop if you wanted the expected behaviour. o CHARACTER data type. Before F77 characters were always stored inside INTEGER variables. o Apostrophe delimited character string constants. o Main program termination without a STOP statement. The next Fortran standard (fortran 90) was published too many years after Fortran 77 was out, allowing other programming languages to evolve and compete with Fortran. For example, the system-programming language C, and its evolved variant C++, became more popular in the traditional strongholds of Fortran: the scientific and engineering worlds, in spite of being non-computationally oriented. The delay in publishing a new standard can be attributed in part to political reasons as testified by Brian Meek in: Fortran 90 standard ------------------- A new standard has been designed and widely implemented in recent years. It is unofficially called Fortran 90, and adds many powerful extensions to FORTRAN 77. The language in its present form is competitive with computer languages created later (e.g. C). Fortran 90 added: o Free format source code form (column independent) o Modern control structures (CASE & DO WHILE) o Records/structures - called "Derived Data Types" o Powerful array notation (array sections, array operators, etc.) o Dynamic memory allocation o Operator overloading o Keyword argument passing o The INTENT (in, out, inout) procedure argument attribute o Control of numeric precision and range o Modules - packages containing variable and code Fortran 95 standard ------------------- Fortran 95 added some minor improvements to the Fortran 90 standard. Fortran from a user point of view --------------------------------- ... yes, it was FORTRAN on the IBM 7094. [I] Have written volumes of Fortran code and have suffered through "it ought to be written in assembly language", "it ought to be written in PL/1", "it ought to be written in COBOL", "it ought to be written in Pascal", "it ought to be written in C", etc. depending on what generation of programmers was doing the criticizing. A few years ago, in the COBOL era, one of the users resorted to replying to questioners by showing them some function they liked and asking "you tell me, what language was that written in?" ... It was good to see someone else cognizant of the language's obvious merits. Bibliography on FORTRAN history ------------------------------- Annals of History of Computing, 6, 1, January, 1984 (whole issue). Programming Systems and Languages (S. Rosen ed.), McGraw Hill, 1967, pp 29-47 (this is Backus's original paper). History of Programming Languages (R.L. Wexelblat ed.), Academic Press, 1981, pp 25-74. A summary appears in vol. 5 of the Encyclopedia of Science and Technology, Academic Press, 1986, under 'Fortran'. and in Chapter 1 of Fortran 90 Explained (Oxford, 1990). +-------------------------------------------------+ | FORTRAN IS THE COMPUTING LANGUAGE OF CHOICE | +-------------------------------------------------+