(Editor's Note: The following executive summary is taken from a programming language survey commissioned by the Defense Information Systems Agency. The study was prepared by the Institute for Defense Analyses. To obtain further information concerning this study, contact the Ada Information Clearinghouse at 703-681-2466.)
Background and Purpose
In June 1994, the assistant secretary of defense for command control, communications, and intelligence commissioned a programming language survey of the Department of Defense (DoD). The purpose of the survey was to identify the number of programming languages being used today in the DoD as compared to 20 years ago when the DoD first began to develop the Ada programming language.
A 1977 study, A Common Programming Language for the Department of Defense --Background, History and Technical Requirements, identified 450 as the minimum, probable number of general purpose languages and dialects used in the DoD but went on to say that the actual number was not known. How this estimate and the method used to count root languages, versions, and dialects came to be is still questioned. For this survey, as part of establishing a strong methodology, counting the number of languages used today required input from the organizations that develop or maintain automated information systems (AISs) and weapon systems. A census sample would include new systems, those being modernized, and those being maintained. For this study, a judgment sample of weapon systems was identified from the 1994 Presidential Budget requests for research, development, test, and evaluation (RDT&E) programs exceeding $15 million and procurement programs exceeding $25 million. Of the 1,300 programs identified, 423 programs were selected because they included software applications. The current DoD list of 53 major AISs was used as a sample population for nonweapon systems.
Programming languages experts have differed dramatically in classifying programming languages for counting purposes, particularly in defining the terms dialect and version. For this survey, we use the term dialect to indicate a relatively minor change in a language, whereas version indicates a larger change and usually has a different name, although the new name may only be the concatenation of a different year or number to the baseline name, e.g., JOVIAL, JOVIAL 73. We counted a version of a root language as a distinct language. The methodology and data collection approach are explained in detail in this report to allow further expansion of the sample population.
| Language Generation | Total SLOC Reported (in millions) |
|
|---|---|---|
| First | 3.90 | |
| Second | 26.30 | |
| Third | General Purpose | 148.38 |
| Special Purpose | 3.70 | |
| Fourth | 5.00 | |
| Fifth | 0.29 | |
| Table 1: Total SLOC by Language Generation for Weapon System Responses. | ||
| Third-Generation Language and Version |
Total SLOC Reported (in millions) |
|---|---|
| Ada 83 | 49.70 |
| C 89 | 32.50 |
| FORTRAN pre-91/92 | 18.55 |
| CMS-2 Y | 14.32 |
| JOVIAL 73 | 12.68 |
| C++ | 5.15 |
| CMS-2 M | 4.23 |
| Other 3GLs | 3.38 |
| Pascal pre-90 | 3.62 |
| JOVIAL pre-J73 | 1.12 |
| FORTRAN 91/92 | 1.00 |
| PL/I 87/93 subset | 0.64 |
| BASIC 87/93 (full) | 0.48 |
| PL/I 76/87/93 | 0.36 |
| Pascal 90 (extended) | 0.29 |
| BASIC 78 (minimal) | 0.17 |
| LISP | 0.10 |
| COBOL pre-85 | 0.09 |
| COBOL 85 | 0.00 |
| Total | 148.38 |
| Table 2: Total SLOC by General Purpose 3GL for Weapon Systems. | |
| Language Generation | Total SLOC Reported (in millions) |
|
|---|---|---|
| First | 0.30 | |
| Second | 0.63 | |
| Third | General Purpose | 38.24 |
| Special Purpose | 0.00 | |
| Fourth | 10.81 | |
| Fifth | 0.05 | |
| Table 3: Total SLOC by Language Generation for AIS Responses. | ||
| Third-Generation Language and Version |
Total SLOC Reported (in millions) |
|---|---|
| COBOL 85 | 14.06 |
| COBOL pre-85 | 8.59 |
| Ada 83 | 8.47 |
| BASIC 87/93 | 2.18 |
| C++ | 2.05 |
| C 89 | 1.55 |
| FORTRAN 91/92 | 0.87 |
| FORTRAN pre-91/92 | 0.47 |
| Total | 38.24 |
| Table 4: Total SLOC by 3GL for AISs. | |
Findings and Conclusions
Recommendation
Accepting the number of 450 or more general purpose programming languages in use in the 1970s, we can see considerable progress has been made by the military departments and agencies in reducing the number to 37 in major systems that are new or being modernized. Yet, the survey indicates that a substantial legacy of applications remain that use older versions of programming languages, vendor-unique languages, and military-defined languages. The maintenance costs for these applications could be reduced and their reliability increased by converting these applications to a current version of a federal information processing standard language. Automated conversion methods should offer a cost-effective technology to facilitate this conversion. Reengineering these applications in another language also is a cost reduction opportunity. Redundant code can be eliminated, software components can be reused, and modern off-the-shelf programming tools can be used to improve maintainability and reliability.
Consequently, we recommend that service and defense agency program managers regularly review their software applications to identify a migration strategy and plan to upgrade them to current versions of standards-based versions of languages and modern labor-saving tools. The progress in reducing the number of languages used, as shown in this survey, indicates that further reduction should be possible. Indeed, we recognize that several migration efforts are already ongoing.
Acknowledgments
Jean Sammet, a language historian, was a valued consultant on the identification and classification of languages by generation and version.
For their assistance in data gathering and data analysis, I thank Bill Brykcznski, Catherine W. McDonald, Sarah H. Nash, and Christine Youngblut.
Audrey A. Hook
1801 N. Beauragarde Street
Alexandria, VA 22311-1772
Voice: 703-845-6639
Fax: 703-845-6848
Internet:hook@ida.org