Previous Table of Contents Next


Tables 10.1 and 10.2, quoted from the VCL with minor reformatting, show the actual ACVC 2.01 test profile run in March 1997, for the GNU Ada 95 (GNAT) compiler under Solaris.

TABLE 10.1. Test Profile for Ada 95 Test Categories

Test Categories Passed NA NS Withdrawn Totals

Ada 9X Basic 2817 33 0 11 2861
Real Time 51 0 0 0 51
OOP 54 0 0 0 54
Type Extensions in Child Units 32 0 0 2 34
Child Library Units 37 0 0 0 37
Predefined Language Environment 26 0 0 1 27
Mixed Features 180 0 0 8 188

Totals 3197 33 0 22 3252

TABLE 10.2. Test Profile for Specialized Needs Annexes

Annex Passed NA NS Withdrawn Totals

C Syst Prog 4 0 0 3 7
D Real Time Syst 26 4 0 1 31
E Dist Syst 8 0 0 0 8
F Info Systems 3 0 0 3 6
G Numerics 5 0 0 0 5
H Safety/Security 0 0 0 0 0

Totals 46 4 0 7 57

10.2.3.3. What Does It All Mean?

Ada compiler validation, for all its openness, has been widely misunderstood in the community at large. It is important to understand what validation does not demonstrate.

First, validation does not, and cannot, demonstrate that a compiler is free of bugs. All we can say is that a validated compiler has passed a large set of standard, publicly distributed, conformance tests. However, to use a maxim attributed to Edsger Dijkstra, “Testing can show only the presence of bugs; it cannot show the absence of bugs.” On the other hand, compiler developers would like their products to be as bug-free as possible, so they continue to develop tests. Compiler vendors have their own (highly proprietary) test libraries, in addition to the ACVC; these libraries (we assume) not only implement the vendor’s internal test design, but also incorporate regression suites based on the experiences of that vendor’s actual users. As with all programs of nontrivial size, as compilers mature, they exhibit fewer and fewer bugs over time.

Second, validation does not assess the performance (time and space resources) of a compiler. For this purpose, various benchmark suites have been developed, but running these is not a part of the validation process.

We cannot expect validation magically to suspend all the laws of large-program development. Validation cannot guarantee perfection. However, it can, and, in the Ada case, it does, contribute much to our confidence in a compiler’s adherence to the language standard. An Ada compiler compiles Ada, accepting and properly translating our valid programs and rejecting our invalid ones, according to the Reference Manual, to the extent that it is humanly possible to test it. In a software industry in which languages have tended to be poorly defined “moving targets,” with weak or nonexistent standards and no public validation process, this is real progress.

10.3. Ada in Today’s World

This section discusses the general state of Ada in use in defense and non-defense projects, Ada in education, and the general availability of Ada 95 compilers.

10.3.1. Ada in Use

As we know, Ada was originally commissioned by the Department of Defense. On the other hand, it was never DoD “property” and has, from its inception in the early 1980s, been chosen for projects well outside the defense sector. Some of its earliest applications were in purely commercial management systems: a payroll system at a truck manufacturer and a job scheduling system at a printing company. The purpose of this section is to bring you up to date on the general state of Ada usage in the world.


Previous Table of Contents Next