Contents   Index   Previous   Next


Section 1: General

1
   Ada is a programming language designed to support the construction of long-lived, highly reliable software systems. The language includes facilities to define packages of related types, objects, and operations. The packages may be parameterized and the types may be extended to support the construction of libraries of reusable, adaptable software components. The operations may be implemented as subprograms using conventional sequential control structures, or as entries that include synchronization of concurrent threads of control as part of their invocation. The language treats modularity in the physical sense as well, with a facility to support separate compilation.
2
   The language includes a complete facility for the support of real-time, concurrent programming. Errors can be signaled as exceptions and handled explicitly. The language also covers systems programming; this requires precise control over the representation of data and access to system-dependent properties. Finally, a predefined environment of standard packages is provided, including facilities for, among others, input-output, string manipulation, numeric elementary functions, and random number generation.
2.a
Discussion: This Annotated Ada Reference Manual (AARM) contains the entire text of the Ada Reference Manual (RM95), plus certain annotations. The annotations give a more in-depth analysis of the language. They describe the reason for each non-obvious rule, and point out interesting ramifications of the rules and interactions among the rules (interesting to language lawyers, that is). Differences between Ada 83 and Ada 95 are listed. (The text you are reading now is an annotation.)
2.b
The AARM stresses detailed correctness and uniformity over readability and understandability. We're not trying to make the language ``appear'' simple here; on the contrary, we're trying to expose hidden complexities, so we can more easily detect language bugs. The RM95, on the other hand, is intended to be a more readable document for programmers.
2.c
The annotations in the AARM are as follows:
2.d
2.e
2.f
2.g
2.h
2.i
2.j
2.k
2.l
2.m
2.n
2.o
2.p
2.q
2.r
2.s
2.t
2.u
2.v
2.w
2.x
2.y
2.z
2.aa
2.bb
2.cc
2.dd
Reason: An explanation of why a certain rule is necessary, or why it is worded in a certain way.
2.ee
Ramification: An obscure ramification of the rules that is of interest only to language lawyers. (If a ramification of the rules is of interest to programmers, then it appears under NOTES.)
2.ff
Proof: An informal proof explaining how a given Note or [marked-as-redundant] piece of text follows from the other rules of the language.
2.gg
Implementation Note: A hint about how to implement a feature, or a particular potential pitfall that an implementer needs to be aware of.
2.hh
Change: Change annotations are not used in this version. Changes from previous versions have been removed. Changes in this version are marked with versioned paragraph numbers, as explained in the ``Corrigendum Changes'' clause of the ``Introduction''.
2.ii
Discussion: Other annotations not covered by the above.
2.jj
To be honest: A rule that is considered logically necessary to the definition of the language, but which is so obscure or pedantic that only a language lawyer would care. These are the only annotations that could be considered part of the language definition.
2.kk
Glossary entry: The text of a Glossary entry -- this text will also appear in Annex N, ``Glossary''.
2.ll
Discussion: In general, RM95 text appears in the normal font, whereas AARM-only text appears in a smaller font. Notes also appear in the smaller font, as recommended by ISO/IEC style guidelines. Ada examples are also usually printed in a smaller font.
2.mm
If you have trouble finding things, be sure to use the index. {italics, like this} Each defined term appears there, and also in italics, like this. Syntactic categories defined in BNF are also indexed.
2.nn
A definition marked ``[distributed]'' is the main definition for a term whose complete definition is given in pieces distributed throughout the document. The pieces are marked ``[partial]'' or with a phrase explaining what cases the partial definition applies to.

Contents   Index   Previous   Next   Legal