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   |
  +-------------------------------------------------+