Appendix N Guidelines for Choosing a Computer Language:
Support for the Visionary Organization

Appendix N: FORTRAN

FORTRAN was the very first 3GL, and it continues to be a popular language for use in numeric-intensive programs. It was developed specifically to support scientific programming, and it is mostly used in that domain today. FORTRAN has been through several revisions over the years in an attempt to keep up with technology. This assessment will consider the most popular forms used today. [Bezner 89] [Buckley 94]

Language Criteria

The following assesses FORTRAN with respect to the language criteria presented in the Criteria for a Good Language section in the main document:

  1. Its definition should be independent of any particular hardware or operating system. FORTRAN is completely independent of any particular hardware or operating system.

  2. Its definition should be standardized, and compiler implementations should comply with this standard. The various versions of FORTRAN have been standardized. However, FORTRAN has followed the standardization path of most languages, where the language was created and used before it was standardized. Hence, it is common for its compiler implementations to support standard FORTRAN with additional, system-dependent features. This results in the creation of much non-standard FORTRAN code.

  3. It should support software engineering technology, discouraging or prohibiting poor practices, and promoting or supporting maintenance activities. FORTRAN 90, the newest version of FORTRAN, has introduced several new features, such as the ability for the user to define new data types and dynamic storage allocation, but these are not major steps forward in terms of software engineering support. In general, FORTRAN provides little software engineering support, and its history with respect to maintenance is not very good.

  4. It should effectively support the application domain(s) of interest. FORTRAN provides specific support for numeric-intensive, scientific programs. It has also been used effectively in related domains, such as embedded systems and real-time systems.

  5. It should support the required level of system reliability and safety. Reliability is not well-supported by language features, since FORTRAN provides very little support for software engineering technology. It lacks consistency checking and provides no data protection. Safety-critical systems, those on which human life may depend, are also not effectively supported by FORTRAN.

  6. Its compiler implementations should be commensurate with the current state of technology. Since FORTRAN continues to be popular, compiler products continue to be updated to the current state of technology.

  7. Appropriate software engineering-based supporting tools and environments should be available. Most software engineering-based support tools and environments do not support FORTRAN as the development language (although they may support interfacing FORTRAN code with other languages). There are many FORTRAN tools available, but the most effective of these, in terms of system development, are specialized numeric packages which could be classified as 4GLs. They help the user to set up and solve specific types of numeric problems. As with most 4GLs, their usefulness is usually limited to systems that are small, or possibly medium, in size and complexity.

Language Characteristics

In this section, FORTRAN is rated with respect to the language characteristics used in Table 2 in the main document [Bezner 89] [Buckley 94]. The ratings range from 0 to 10, where 0 means the language provides no support for the characteristic, and 10 means it provides extensive support. The ratings given below are those provided in Table 2. The reader must bear in mind that the support for a good characteristic in a language does not necessarily mean that it is always used, or used appropriately. Unskilled programmers can write bad code in any language, but a good language facilitates the production of good code by skilled programmers.

Clarity of source code the extent to which inherent language features support source code that is readable and understandable and that clearly reflects the underlying logical structure of the program.

FORTRAN has a very clear syntax for expressing numerical formulas and equations. However, many language features are error-prone because FORTRAN compilers are very forgiving of strange forms of syntax, rather than flagging these as errors. The improvements which have been made in this area in recent versions of FORTRAN are not nearly enough. The improvements made in program structuring capabilities still do not support encapsulation. Rating: 5

Complexity management (architecture support) the extent to which inherent language features support the management of system complexity, in terms of addressing issues of data, algorithm, interface, and architectural complexity.

FORTRAN provides the capability to manage complexity through separate compilation of program pieces. However, it neither provides consistency checking across compilation units, nor a mechanism for managing very large software components, such as subsystems. Rating: 4

Concurrency support the extent to which inherent language features support the construction of code with multiple threads of control (also known as parallel processing).

Standard FORTRAN provides no inherent language support for concurrency. However, non-standard features supporting concurrency are sometimes included in compiler products. Rating: 0

Distributed system support the extent to which inherent language features support the construction of code to be distributed across multiple platforms on a network.

FORTRAN provides no specific support for distributed systems. Rating: 0

Maintainability the extent to which inherent language features support the construction of code that can be readily modified to satisfy new requirements or to correct deficiencies.

A FORTRAN programmer must work very carefully to write maintainable code because the language provides little inherent support. Rating: 2

Mixed language support the extent to which inherent language features support interfacing to other languages.

FORTRAN will readily use object files produced by any language compiler as it composes an application. This is easy because FORTRAN requires no consistency checking among these separate files. While that makes the object files easy to use, it does not provide specific support for properly interfacing the languages. Rating: 5

Object-oriented programming support the extent to which inherent language features support the construction of object-oriented code.

FORTRAN provides no object-oriented programming support. Rating: 0

Portability the extent to which inherent language features support the transfer of a program from one hardware and/or software platform to another.

The existence of standards for FORTRAN makes portability possible. However, common practice does not necessarily adhere to a standard. There are also no inherent language features which facilitate portability, such as the encapsulation of dependencies. Rating: 3

Real-time support the extent to which inherent language features support the construction of real-time systems.

FORTRAN was developed for computation, and it is often used in very computationally-intensive real-time systems. The language definition has been streamlined for this purpose. Rating: 5

Reliability the extent to which inherent language features support the construction of components that can be expected to perform their intended functions in a satisfactory manner throughout the expected lifetime of the product.

FORTRAN provides little in the way of inherent language features to support reliability. It readily allows inconsistencies to show up in compiled code. Rating: 1

Reusability the extent to which inherent language features support the adaptation of code for use in another application.

Support for reusability requires support for code clarity, encapsulation, maintainability, and portability. FORTRAN provides little inherent support for any of these characteristics. Hence, it does not support development reuse on a large scale. On the other hand, reuse of specialized FORTRAN libraries, such as libraries of mathematical functions, is very effective. Rating: 3

Safety the extent to which inherent language features support the construction of safety-critical systems, yielding systems that are fault-tolerant, fail-safe, or robust in the face of systemic failures.

[Cullyer 91] does not even consider FORTRAN for safety-critical systems, although FORTRAN has been used in such systems. The language provides no support for safety-critical systems and has created problems in such systems in the past. Rating: 0

Standardization the extent to which the language definition has been formally standardized (by recognized bodies such as ANSI and ISO) and the extent to which it can be reasonably expected that this standard will be followed in a language translator.

FORTRAN is standardized by both ANSI and ISO. However, there is no reasonable expectation that a FORTRAN compiler will follow the standard without including additional features. Rating: 5

Support for modern engineering methods the extent to which inherent language features support the expression of source code that enforces good software engineering principles.

FORTRAN was not created with support for software engineering in mind, and it provides little inherent support for modern engineering methods. Rating: 1


< Previous Page Search Contents Tables Next Page >

Sections
1 2 3 4 5 6 7

Appendices
A B C D E F G H J
K L M N P Q R S