5. CONCLUSIONS AND DISCUSSION This survey is not a universal census of weapon systems and AISs but the results reported do represent a substantial and visible portion of the population. Even though the sample size was constrained by available time and resources, a systematic method was used and documented so that others who care to extend the sample size at a later date will be able to obtain results that are consistent with the language counting method used in this survey. The responses received represent over 60% of the programs contacted. We have drawn the following conclusions about programming languages currently used in the DoD, based upon findings from the survey: Conclusion 1: The estimated 237.6 million SLOC in this survey are distributed among the five generations of programming languages currently used. The largest and most significant group of programming languages in SLOC is third generation languages which consist of 37 languages. In this group, there are 18 general purpose languages (including separate counts for differing versions of major languages as shown on the survey form), 9 special purpose languages (a subset of third generation languages), and 10 unclassified languages. The issue of how to count languages makes this conclusion open to some level of debate. There are many dialects of a language version that some may choose to count as unique languages. If we accept the historical assertion that at least 450 third generation languages were used in the late 1970s, we can see that considerable progress has been made toward reducing the number of programming languages used in DoD. Conclusion 2: Ada 83 is being used in weapon system software and AISs that are being modernized. Using SLOC as a measure of usage, Ada ranks first (ref. Table 4 on page 20) in weapon systems. In AISs, Ada 83 has not replaced Cobol (ref. Table 8 on page 28). The fact that Ada usage is not greater in DoD could be due to several factors. First, production quality Ada compilers and development tools were not available immediately after the language was adopted as a standard. There was a lag-time of four to five years before compiler vendors could offer choices of Ada environments for high performance host/target machines. Second, there is always inertia to overcome before change can occur and the resistance of the DoD software development community to DoD policy toward the use of Ada perpetuated that inertia. And third, it takes time to educate and train software engineers and managers to understand the language and to use it effectively. There is an unknown quantity of legacy software being maintained by software support activities that modify code and/or provide data processing service. Many of these software applications were developed by contractors and are being maintained by the government using the language versions and dialects chosen by the development contractor. The constraints on this survey precluded our being able to systematically collect a sample from the software maintained by O&M budgets. However, we speculate that languages used in the maintenance community include more use of second generation languages (assembly) and older versions of third generation languages. Conclusion 3: The usage of first generation language (machine) in both weapon systems and AIS applications is insignificant (ref. Table 3 on page 20). The existence of first generation language (machine) is almost certainly due to the continued maintenance of fairly old legacy hardware and software. It is highly unlikely that future new software will be written in first generation languages, considering the target computer systems which will be candidates for modernization. Conclusion 4: Second generation language (assembly) is being used in both weapon systems and AIS applications and will likely continue in minimal use. To some extent, the use of second generation languages (assembly) is also due to the continued maintenance of legacy software. However, there are specific reasons, other than historical ones, that have necessitated the use of second generation languages. One of these reasons is special purpose hardware and, in this case, the need for second generation languages will almost certainly continue. Another reason is performance. Ten or more years ago, many systems used second instead of third generation languages for those parts of the system that were time critical. Although the performance of modern third generation languages, such as Ada or C, can meet many such performance issues now, it is likely that minimal use of assembly language will continue for some time for its real or perceived performance properties. However, this will become less of a problem as better software engineering techniques are used in code generation. Conclusion 5: The use of fourth generation languages is greater in AIS applications than in weapon system applications. AIS applications have used fourth generation languages as database management products, graphical user interfaces, and shrink-wrapped tools have been acquired to improve user services. The SQL standard has not only promoted relational database products but has provided an alternative to the continued use of proprietary languages for data access. The modest use of fourth generation languages by the weapon system community could indicate that COTS products are seldom used to develop software or that the respondents did not consider the development environment as appropriate for this survey. Conclusion 6: Fifth generation (artificial intelligence) languages are hardly used in weapon system and AIS applications. There are several reasons for the very low usage of fifth generation languages. One reason is that the immaturity of fifth generation AI languages does not recommend their use in operational weapon systems. Other reasons could be the lack of exploratory R&D programs in the sample or that many AI problems are being solved with third generation languages. Conclusion 7: In both weapons system and AIS applications, the data shows that older versions of programming languages are being used. The perpetuation of applications written in these older versions can create portability and re-use problems. For example, the continued use of several versions of CMS2, Jovial, Fortran, Cobol, and platform/vendor unique languages may be motivated by short-term economic views. There are tools to aid in re-engineering and conversion tools that makes reimplementing existing software more feasible and practical than to continue maintenance of this multi-version software. Conclusion 8: Both weapon system and AIS applications use several languages. Even if only one language were used, software commonality, portability, and interoperability would be imperfect. With modern programming languages and compilers, increased use of COTS products and re-use of software components, it is possible to produce applications with components written in different languages. Ada, with its specified pragma interfaces, is a language that is well suited to being used with other languages in multi-language applications.