refined Fortran Information, explanation, recent texts, monographs, and related patents.
Information & explanations, latest texts & monographs on Fortran (including recent related patents.)


Fortran

Fortran (also FORTRAN) is a programming language originally developed in the 1950s and still in use today. The name is short for "Formula Translator/Translation". Early versions of the language were known as FORTRAN, but the capitalization has been dropped in newer revisions beginning with Fortran 90. The official language standards now refer to the language as "Fortran". Fortran is mainly used for scientific computing and numerical analysis. Although originally a procedural language, recent versions of Fortran have included some features to support object-oriented programming. The first FORTRAN compiler was developed for the IBM 704 in 1954-57 by an IBM team led by John W. Backus. This was an optimizing compiler, because the authors reasoned that no one would use the language if its performance was not comparable to assembly language. The language was widely adopted by scientists for writing numerically intensive programs, which encouraged compiler writers to produce compilers that generate faster code. The inclusion of a complex number data type in the language made Fortran especially suited to scientific computation. There are many vendors of high performance Fortran compilers today. Many advances in the theory and design of compilers were motivated by the need to generate good code for Fortran programs. Several revisions of the language have appeared, including the well-known FORTRAN IV (also known as FORTRAN 66), FORTRAN 77, and Fortran 90. The most recent formal standard for the language, published in 1997, is known as Fortran 95. IBM's versions were never as popular as those developed by others, which was especially true of FORTRAN IV -- WATFOR, the version of FORTRAN IV developed at the University of Waterloo, Canada, was universally preferred because it produced better reports of compilation errors. The software for automatically generating flow charts from FORTRAN programs was also developed outside IBM. Initially, the language relied on precise formatting of the source code and heavy use of statement numbers and goto statements. These quirks have been removed from newer versions of the language. Successive versions also introduced 'modern' programming concepts, such as source code comments and output of text, IF-THEN-ELSE (in FORTRAN 77), recursion (in Fortran 90), and parallel constructs, while still attempting to maintain Fortran's 'lean' profile and high performance. Among the most popular specialized Fortran-based languages were SAS, for generating statistical reports, and SIMSCRIPT, for simulating processes involving queuing. Vendors of high performance scientific computers (Burroughs, CDC, Cray, IBM, Texas Instruments, ...) added extensions to Fortran to make use of special hardware features such as: instruction cache, CPU pipeline, vector arrays, etc. For example, one of IBM's Fortran compilers (H Extended IUP) had a level of optimization which reordered the machine code instructions to keep several internal arithmetic units busy at the same time. Another example is CFD, a special 'version' of Fortran designed specifically for the ILLIAC IV supercomputer, running at NASA's Ames Research Center. These extensions have either disappeared over time or had elements incorporated into the main standard; the major remaining extension is OpenMP, which is a cross-platform extension for shared memory programming. One new extension, CoArray Fortran, is intended to promote parallel programming. As what was basically a first attempt at designing a high-level language, the language's syntax is regarded as arcane by many programmers who learned more modern languages. It is difficult to write a lexical analyser for, and one-character mistakes can lead to runtime errors rather than compilation errors if more recent constructs such are not used. Some of the earlier versions, particularly, lacked facilities that would be regarded as useful in modern machines, such as dynamic memory allocation. At the same time, the syntax of Fortran has been tuned to scientific and numerical work, and many of its deficiencies have been addressed in more recent versions. For example, Fortran 95 has very short commands for performing mathematical operations on matrices and arrays which not only greatly improves program readability but also provides useful information to the compiler to enable it to vectorize operations. For these reasons, Fortran is not often used outside scientific and engineering numerical analysis, but remains the language of choice for high performance numerical computing. Standards The two standards below reflect the current Fortran implementations.
  • ANSI X3.198-1992 (R1997). Title: Programming Language "Fortran" Extended. Informally known as Fortran 90. This standard was published by ANSI.
  • ISO/IEC 1539-1:1997. Title: Information technology - Programming languages - Fortran - Part 1: Base language. Informally known as Fortran 95. There are a further 2 parts to this standard. Part 1 has been formally adopted by ANSI.
Code Sample (Hello, World)
       PROGRAM HELLO
       WRITE(*,10)
    10 FORMAT('Hello, world!')
       STOP
       END
External links Programming Languages Ada | Algol | APL | BASIC | COBOL | C | C++ | C# | ColdFusion | Delphi | Eiffel | Forth | FORTRAN | Haskell | Java | JavaScript | Jython | Lisp | ML | Modula-2 | Oberon | Pascal | Objective-C | Perl | PHP | PL/I | Postscript | Powerbuilder | Prolog | Python | QBASIC | Ruby | Scheme | Smalltalk | Tcl/Tk | Visual Basic

This article is adapted from from Wikipedia All Wikipedia article text is available under the terms of the GNU Free Documentation License

Numerical Recipes in Fortran by William H. Press

Fortran 90/95 Explained by Michael Metcalf

FORTRAN 90 Programming by T.M R. Ellis

Joe Celko's SQL Puzzles and Answers by Joe Celko

Fortran 90/95 for Scientists and Engineers by Stephen J. Chapman

Introduction to FORTRAN 90 for Engineers and Scientists by Larry R. Nyhoff

FORTRAN 77 for Engineers and Scientists with an Introduction to FORTRAN 90 (4th Edition) by Larry Nyhoff

Object-Oriented Programming via Fortran 90/95 by Ed Akin

Digital Visual FORTRAN Programmer's Guide by Michael Etzel

Compaq Visual Fortran by Norman Lawrence

Numerical Recipes in Fortran 90 by William H. Press

Numerical Recipes in FORTRAN Example Book : The Art of Scientific Computing by William H. Press

Fortran 95 Handbook (Scientific and Engineering Computation) by Jeanne C. Adams

FORTRAN 90 for Engineers and Scientists by Larry Nyhoff

Schaum's Outline of Theory and Problems of Programming With Fortran 77 (Schaum's Outline Series) by William E. Mayo


Recent Fortran related patents

From USPTO:
6717874: Systems and methods for reducing the effect of noise while reading data in series from memory
6717719: Coherent optical beam combination using double-coated glass mirrors/mirror pairs
6716394: DNA sequencing using multiple fluorescent labels being distinguishable by their decay times
6715148: Efficient method router that supports multiple simultaneous object versions
6715139: System and method for providing and displaying debugging information of a graphical program on a first computer during execution of the graphical program on a second computer
6714916: Crossing paths notification service
6714915: System and method for project designing and developing a procurement and accounts payable system
6714877: Method for correcting combustion effluent data when used for input-loss performance monitoring of a power plant
6713390: Barrier layer deposition using HDP-CVD
6713257: Gene discovery using microarrays
6713127: Methods for silicon oxide and oxynitride deposition using single wafer low pressure CVD
6713023: Flow cell for chemical reactions
6711672: Method and system for implementing subroutine calls and returns in binary translation sub-systems of computers
6711670: System and method for detecting data hazards within an instruction group of a compiled computer program
6711290: Character recognition
6711137: System and method for analyzing and tuning a communications network
6710965: Phase-advanced filter for robust resonance cancellation
6710878: In-line particulate detector
6709869: Devices and methods for using centripetal acceleration to drive fluid movement in a microfluidics system
6708330: Performance improvement of critical code execution
6708325: Method for compiling high level programming languages into embedded microprocessor with multiple reconfigurable logic
6708169: Apparatus and method for generating a merged symbol file for verifying symbolic data
6708077: Furnace pacing for multistrand mill
6707568: Printer driver filter and method of printing with the same
6705990: Method and apparatus for monitoring physiologic parameters of a living subject
6704873: Secure gateway interconnection in an e-commerce based environment
6704855: Method and apparatus for reducing encoding needs and ports to shared resources in a processor
6704755: Systems and methods for backing up data files
6704563: Systems and methods for prerating costs for a communication event
6703205: Apparatus and methods for correcting for variable velocity in microfluidic systems
6702351: Mobile multi-display billboard vehicle and method of advertizing
6701518: System and method for enabling efficient processing of a program that includes assertion instructions
6701513: Program-development environment for use in generating application programs
6701345: Providing a notification when a plurality of users are altering similar data in a health care solution environment
6701315: Systems, methods, and computer program products for delivering information in a preferred medium
6701223: Method and apparatus for determining optimal control settings of a pipeline
6700652: Low-cost continuous-wave-laser (CW laser) digital particle image velocimetry
6700468: Asymmetric magnets for magnetic resonance imaging
6699472: Method of treating allergic disorders
6698015: Apparatus and method for improving performance of critical code execution
6698014: System for automatically converting source code from one programming language to another
6698012: Method and system for testing behavior of procedures
6697971: System and method for detecting attempts to access data residing outside of allocated memory
6697961: Method and system for describing predicates in disjuncts in procedures for test coverage estimation
6697790: Intelligent data structure, processing apparatus, and medium using network
6697491: 5-2-5 matrix encoder and decoder system
6697088: Graphical presentation system
6692256: Interactive tutorial
6691042: Methods for generating differential profiles by combining data obtained in separate measurements

Bibliographic Resources
Updates and comments at Essential Facts blog
Are you interested in Feng Shui?
Price Theory Resources
Fructose, Sucrose, Glucose Core Bibliography
World Class Photographers
Some philosophical movements
Top PDF and eBook Downloads
©2004, All applicable rights reserved.