**History**

FORTRAN (FORmula TRANslation)
is one of the oldest programming languages, dating from the mid-fifties. It has
passed through versions FORTRAN I, FORTRAN II, FORTRAN
IV, FORTRAN77, and now Fortran 90. Interestingly, the American National Standards
Institute (ANSI) committee now standardizing the language decided, as of
Fortran 90, to change the spelling from "FORTRAN" to
"Fortran."

**New Features**

Fortran 90 adds support of recursion, pointers, and programmer-defined data
types to older versions of the language.

**Fortran's**** Niche**

The traditional strength of Fortran has always been scientific, mathematical,
statistical, and engineering programming. The economic motivation for the
inventors of Fortran and its early compilers (at IBM)
was "This new-fangled thing called a 'compiler' must generate code that
executes as fast as assembler language hand-coded by an expert; otherwise, the
compiler won't sell." Here's an tidbit of Fortran code to sum the elements
of an array having odd-number subscripts:

TOTAL = 0.0

DO 10 I = 1, 10, 2

TOTAL = TOTAL + A(I)

10 CONTINUE

This "triplet notation" of "1, 10, 2", which appears in
many Fortran constructs, here means "iterate on I running from 1 to 10 in
steps of 2." The triplet notation was adopted to ease the compiler's task
of writing code making best use of the registers in the IBM 704 for speed of
execution. In those days (the 1950's) of cheap programmer time and precious
machine-cycle time, no one asked "Will this notation be regarded as easy
to learn and use without error, and will it help or hinder the writing of
easily understood, maintainable code?"

As a rough guide, the more heavily "number crunching" overshadows
input and output operations within an application, the more suitable Fortran is likely to be for that application. The types of
applications suitable for Fortran are
"compute-bound" in contrast to "I/O bound." A Special
Interest Group (SIG) of the Association for Computing Machinery (ACM), SIGPLAN, publishes a newsletter
"Fortran Forum" which discusses Fortran
capabilities and suitable applications.

**Libraries Available to the Fortran User**

Expert use of this language often entails usage of large libraries of
mathematical and statistical subprocedures available.
Two of the best known are the International Mathematical and Statistical
Library (IMSL) and the
Numerical Algorithms Group (NAG). These
libraries make short work of computationally intensive tasks such as solving
systems of linear equations, computing eigenvalues
and eigenvectors of matrices, finding roots of polynomial or transcendental
functions, integrating functions numerically (quadrature),
solving systems of differential equations, and performing linear, polynomial,
or non-linear regression. Another SIG of the ACM, SIGNUM, studies problems of such
numerical algorithms (speed, memory usage, and maintenance of numerical
precision).

Good references for numerical analysis:

Isaacson, Eugene, and Herbert Bishop Keller. 1966. *Analysis of Numerical
Methods*.

*Numerical Methods for Engineers*.

The second book includes many Fortran examples.

**New Directions for Fortran 90**

Current research in compiler theory involves equipping compilers to generate
object code able to exploit the capabilities of massively parallel computers.
Fortran 90 compilers are a key target of such research.

**References**

Good references for Fortran are:

Tucker, Allen B. Jr. 1986. *Programming Languages*, 2nd edition.

Nyhoff,
Larry R., and *Fortran**
90 for Engineers and Scientists*.

**Classes**

Here at the

Numerical analysis is taught in MATH/CCM 472, Introduction
to Numerical Analysis.

Tutorial available over the Internet: A FORTRAN 77 tutorial (basic level) and a Fortran 90 tutorial for people already knowing FORTRAN 77 here.

Tutorial available over the Internet: A FORTRAN 77 tutorial (basic level) and a Fortran 90 tutorial for people already knowing FORTRAN 77 is available here