1.4 The Approach
In responding to the revision requirements, the Revision team followed
the inspiration of Jean Ichbiah (who led the original design team), both in
remaining faithful to the principles underlying the original Ada design, and in
the approach to the revision process. To quote Dr Ichbiah in his introduction
to John Barnes' textbook on Ada [Barnes 82]:
Clearly, further progress can only come by a reappraisal of implicit
assumptions underlying certain compromises. Here is the major contradiction in
any design work. On the one hand, one can only reach an harmonious integration
of several features by immersing oneself into the logic of the existing parts;
it is only in this way that one can achieve a perfect combination. On the
other hand, this perception of perfection, and the implied acceptance of
certain unconscious assumptions, will prevent further progress.
Wherever possible, enhanced functionality in Ada 95 has been achieved by
seeking and eliminating such unnecessary assumptions, thereby permitting the
generalization of features already in Ada, and the removal of special cases and
restrictions. A careful analysis was made of Ada 83, of language study notes
prepared during the original design process and of the many Ada Issues and
other comments that have since been received. Based on this analysis, and on
the Ada community's experience in implementing and using Ada during the past
ten years, the team identified limitations that, while they were included to
simplify implementations and/or to lower risk when the language was first
standardized, are no longer necessary. They also drew upon the wealth of
practical experience gained during the 1980's in the use of object-oriented
design methods, object-oriented programming languages, and real-time
programming made possible by Ada.
The resulting Ada 95 revision is upwardly compatible for virtually all existing
Ada 83 applications. Most incompatibilities are restricted to pathological
combinations of features that are rarely used in practice. Total upward
compatibility would not have allowed the correction of certain errors and
certainly would not have allowed the enhancements needed to satisfy many of the
requirements. Indeed, as discussed in Chapter 4 in more detail, no language
revision has ever achieved total upward compatibility. The careful attention
to this issue in the design of Ada 95 means that the expected transition costs
for existing Ada programs are anticipated to be very low indeed.
Following the guidance of the Requirements document, Ada 95 comprises a Core
language, which must be implemented in its entirety, plus several Specialized
Needs Annexes which provide extended features for specific application areas.
These Annexes provide standard definitions for application-specific packages,
pragmas, attributes, and capacity and performance characteristics of
implementations. The Annexes address the following areas: Systems Programming,
Real-Time Systems, Distributed Systems, Information Systems, Numerics, and
Safety and Security.
It should be noted that the Core language includes a considerably extended
predefined environment covering important functionality such as mathematical
functions and string handling. Much of the functionality of this predefined
environment and the specialized annexes is already provided by implementations
of Ada 83 but in non-standard ways; providing this within the standard will
thus increase portability between implementations.
1.5 Using this Document
This document provides a description of the main features of Ada 95 and
the rationale for the changes from Ada 83. It follows the inspiration of the
rationale for Ada 83 [IBFW 86] by blending exposition with explanation.
Chapter 2 highlights the main changes primarily the four key areas
outlined in Section 1.3. The intent is to provide a technically oriented
management overview illustrating, with examples, the prime benefits of Ada 95
with respect to Ada 83.
By contrast, Chapter 3 provides an overview of the whole language in a
discursive style and introduces new terminology where appropriate. For the
most part, this overview is equally applicable to both Ada 83 and to Ada 95.
Finally, Chapter 4 summarizes the incompatibilities thereby giving guidance to
existing Ada 83 programmers in order to smooth their transition to Ada 95.
For further information the reader should turn to the Ada 95 Rationale [Rat 95]
of which this document forms the introductory part and the Ada 95 Reference
Manual [ISO 95] which is the formal standard itself. The rationale for minute
detail is admirably addressed in the Annotated Ada 95 Reference Manual [AARM]
which is a version of [ISO 95] including embedded non-normative discussion
mainly of interest to language experts and compiler writers.