EXECUTIVE SUMMARY
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 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 developing 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
developing or maintaining 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 judgement
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 non-weapon systems.
Experts in the field of programming languages have differed
dramatically in classifying programming languages for counting
purposes, particularly in defining the terms "dialect" and "version."
For this paper, 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 is
explained in detail in this report to allow further expansion of the
sample population.
Findings and Conclusions
- The estimated 237.6 million source lines of code in this survey are
distributed among five generations (Tables ES-1 and ES-2).
- There are 37 third generation general and special purpose languages,
the latter being used only in weapon systems. (Tables ES-3 and ES-4).
- For both weapon systems and AISs, over 80% of the applications are
written in third generation languages.
- There is a greater use of fourth generation languages in AIS
applications due to commercial off-the-shelf products for such
applications as data management, interactive graphical displays, and
editors.
- There is greater use of first and second generation languages
(machine and assembly, respectively) in weapon systems than in AIS
applications. This difference is due to the use of special purpose
embedded computers in weapon systems.
- Most respondents indicated that more than one language is being used
in application software. This multi-language use includes languages
from all five generations. With modern programming languages and
compilers, increased use of COTS products, and re-use of software
components, it will become a common practice to produce applications
with components written in different languages.
Table ES-1. Total SLOC by Language
Generation for Weapon System Responses |
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 ES-2. Total SLOC by Language Generation for AISs Responses |
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 ES-3. Total SLOC by General Purpose 3GL for Weapon Systems |
Third Generation Language & 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 ES-4. Total SLOC by 3GL for AISs |
Third Generation Language & 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 |
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.
Re-engineering these applications in another language is also a cost
reduction opportunity. Redundant code can be eliminated, software
components can be re-used, 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 for upgrading 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 now.