. "D Detailed Comparisons of Ada and Other Third-Generation Programming Languages." Ada and Beyond: Software Policies for the Department of Defense. Washington, DC: The National Academies Press, 1997.
The following HTML text is provided to enhance online
readability. Many aspects of typography translate only awkwardly to HTML.
Please use the page image
as the authoritative form to ensure accuracy.
Table D.1 Language Functionality Attributes
FAA/IBM Study
SEI Study
Language
Attributes
Maximum
Score
Ada 83
C
Pascal
Jovial
Fortran
Ada
83
C++
Capability
16.7
16.1
9.6
10.4
7.6
3.9
15.3
11.3
Efficiency
16.4
8.0
11.8
10.8
11.0
11.1
10.7
10.9
Availability/ Reliability
22.6
21.5
11.6
14.5
15.6
10.3
19.1
12.6
Maintainability/
Extensibility
17.4
14.0
10.2
12.2
6.8
8.3
13.6
11.4
Life-cycle cost
11.3
8.2
7.4
7.8
4.9
5.2
8.4
8.0
Risk
15.6
8.8
8.9
7.6
9.6
8.2
11.7
9.8
Total
100.0
76.6
59.5
63.3
55.5
47.0
78.8
64.0
SOURCES: Federal Aviation Administration (FAA)/IBM data from IBM (1985); Software Engineering Institute (SEI) data from Weiderman (1991).
Availability/Reliability—factors influencing day-to-day safety of operational systems;
Maintainability/Extensibility—factors influencing long-term viability of operational systems;
Life-cycle cost—elements of cost associated with or affected by the implementation language; and
Risk—areas of uncertainty or concern associated with or affected by the implementation language.
Ada scored the highest overall in both studies. It scored the highest in each individual category, except for efficiency, where it was ranked last, and risk, where it was ranked first in the SEI study and third in the FAA study.
PROJECT EVALUATION DATA
In comparisons of Ada with other programming languages in actual development projects, empirical data on characteristics such as expressibility, maintainability, defect rates, reusability, and cost factors are of particular interest. Since Ada has been used in relatively large programs, a larger proportion of data has been collected for Ada than for contemporaneous commercial programming languages like C and C++.
Much of the data are subjective in nature, and care must be taken in drawing conclusions from such studies. For instance, the data in Table D.2 are confounded by differences in the expressive power of a source line of code in different programming languages. One way of normalizing uses tables of source lines of code per function point (Jones, 1995). However, as shown in Table D.2, these ratios have wide variability. Lubashevsky (1996) reports variations in source lines of code per function point exceeding factors of 2 for C and 6 for C++. Finally, there are differences in expressiveness for the same language across different application domains.