FORTRAN

John Backus, the developer of FORTRAN, in 1976. Click here to view the picture source and to learn more about FORTRAN.


Topic:
FORTRAN (FORmula TRANslation) is a high-level programming language used mostly in scientific and industrial programming.

Year:
FORTRAN was developed by John Backus at IBM in 1954 and was delivered in 1957. Since then it has undergone several major modifications. FORTRAN 66 was delevoped as a standard in 1966, followed by FORTRAN 77 in 1978. Fortran 90 (here the spelling of the name of the language changed from all upper-case letters to only an upper-case "F") was accepted by the International Standards Organization in 1990, and by the American National Standards Institute (ANSI) in 1992. There is also an HTML version of FORTRAN 77 and Fortran 95 will soon be released.


Summary Composer:
Molly Maddox.


Summary:
John Backus, a native of Wilmington, DE, credits his 1954 invention of FORTRAN, the first high-level programming language, to laziness. Backus was working for IBM at the time, and he simply got tired of having to enter endless lines of 1's and 0's in order to program a computer. Using FORTRAN, programmers were now able to program in one fourth the time it took using the 1's and 0's technique. FORTRAN also made it possible to run the same program on several computers at once, improving portability and opening up endless possibilities.

The staying power of FORTRAN is due to the fact that it has been updated several times since its delivery in 1957. Though it is nearing forty years old, FORTRAN remains the dominant language in scientific and industrial programming. When FORTRAN 66 was released, the standard was only 36 pages long. The standard for FORTRAN 77, however, was 300 pages long, a great deal of the changes having been made to the input/output aspect of the language. File handling was also made easier with FORTRAN 77. Fortran 90 was developed to be more compatible with and to run more smoothly and effectively on modern computer systems. Changes were also made to the processing capabilities of the language with Fortran 90, making it possible to complete a variety of operations with only one command (due to automatic looping), thus allowing automatic parallelization (see Parallel Computing). This automatic parallelization makes Fortran 90 compatible with parellel computer systems. Fortran 90 is also an improvement over FORTRAN 77 in that Fortran 90 allows the programmer to use free-form source code, which means that information no longer has to be entered in specific columns in a file. There are still, however, few compilers available for Fortran 90, but many are hopeful that that will soon change as interest grows in parallel computing. High Performance Fortran (HPF) is an extension of Fortran 95 and is meant to be used on parallel computing machines. Interest in HPF is also expected to grow in upcoming years.

The invention of FORTRAN marked the beginning of a radical change in the computer industry. Backus' "laziness" sparked a $23 million dollar computer software industry. "FORTRAN provided the framework for the development of most high-level programming languages and has been used for everything from video games, air traffic control systems, payroll calculations, and compiler writing" (Parallel Computer Research). Backus won the 1993 National Academy of Engineering's Charles Stark Draper Prize, the highest national prize awarded in engineering, for the development of FORTRAN. The prize is awarded to an individual for an advancement in engineering that "contributes to human welfare and freedom" (Parallel Computing Research)) . Backus has also received the McDowell Award and the Turing Award for his contributions to the field of Computer Science.


Bibliography:
Allen, Richard C., Jr.; Paula Avery; and Jill Y. Snyder (1995). On-Line High School Computational (HSCS) Textbook. Unit 8: Overview of FORTRAN. [WWW document] URL http://k12.colostate.edu/textbook/unit8/fortran8.1.html

Bronshtein, Mariana, and Yuval Levy, Vered Greenberg, Yaron Matas, Elisheva Sperber. Generations of Languages. [WWW document] URL http://iew3.technion.ac.il:8080/Course/094221/1/shevi2.html

Douglas, Brian (1996). "He Ignited A Software Revolution With Fortran Language." [WWW document] URL http://www.scitechint.com/articles/Ignited.html

Einarsson, Bo and Yurij Shokin (1996). Fortran 90 for the Fortran 77 Programmer. [WWW document] URL http://www.nsc.liu.se/~boein/f77to90/intro.html

Free Online Dictionary of Computing (1996, December 1). [WWW document] URL http://cs.nyu.edu/cs/faculty/shasha/outofmind/backus.html

Maui High Performance Computing Center (1995). High Performance Fortran (HPF) / Fortran 90 (F90). [WWW document] URL http://www.uni-karlsruhe.de/~SP2/Workshop.mhpcc/hpf/hpf.html#HISTORY

Parallel Computing Research, (1993, October--Volume I, Issue 4). "Backus Receives NAE's Draper Prize for Development of FORTRAN." [WWW document] URL http://softlib.rice.edu/CRPC/newsletters/oct93/news.backus.html


Glossary of Terms:
All definitions taken from The Free Online Dictionary of Computing

Complier: A program that converts another program from some source language (or programming language) to machine language (object code). Some compilers output assembly language which is then converted to machine language by a separate assembler. A compiler is distinguished from an assembler by the fact that each input statement does not, in general, correspond to a single machine instruction or fixed sequence of instructions. A compiler may support such features as automatic allocation of variables, arbitrary arithmetic expressions, control structures such as FOR and WHILE loops, variable scope, input/ouput operations, higher-order functions and portability of source code.

High-level programming language: (HLL) A programming language which provides some level of abstraction above assembly language. These normally use statements consisting of English-like keywords such as "FOR", "PRINT" or "GOTO", where each statement corresponds to several machine language instructions. It is much easier to program in a high-level language than in assembly language though the efficiency of execution depends on how good the compiler interpreter is at optimising the program.

HTML: Hypertext Markup Language (HTML) A Hypertext document format used on the World-Wide Web. Built on top of SGML. "Tags" are embedded in the text. A tag consists of a "<", a "directive", zero or more parameters and a ">". Matched pairs of directives, like "" and "" are used to delimit text which is to appear in a special place or style. Links to other documents are in the form foo where "a", "/a" delimit an "anchor" called baz, "href" introduces a hypertext reference, which in this case is a Uniform Resource Locator (URL). The text "foo" will be the label appearing on the link in the browser. A certain place within an HTML document can be specified by following the document name with a hash (#) and the name of an anchor at that position. HTML supports some national characters through special escape sequences.

Parallel Computing (Parallel Processing): The simultaneous use of more than one computer to solve a problem. There are many different kinds of parallel computers (or "parallel processors"). They are distinguished by the kind of interconnection between processors (known as "processing elements" or PEs) and between processors and memory. Flynn's taxonomy also classifies parallel (and serial) computers according to whether all processors execute the same instructions at the same time (single instruction/multiple data) or each processor executes different instructions (multiple instruction/multiple data - MIMD).

Portability: The ease with which a piece of software can be made to run in a new environment (compiler, operating system or computer). The most important factor is the language in which the software is written and the most portable language is almost certainly C (though see Vaxocentrism for counterexamples). This is true in the sense that a C compiler is available for most systems and is often the first compiler provided for a new system. This has led several compiler writers to compile other languages to C code in order to benefit from its portability (as well as the quality of compilers available for it). The least portable type of language is obviously assembly code since it is specific to one particular (family of) processor(s). It may be possible to translate mechanically from one assembly code (or even machine code) into another but this is not really portability. At the other end of the scale would come interpreted languages which rely on the availability of a portable interpreter written in a lower level language.