This International Standard specifies the form and
meaning of programs written in Ada. Its purpose is to promote the portability
of Ada programs to a variety of computing systems.
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. Ada supports object-oriented programming by providing classes
and interfaces, inheritance, polymorphism of variables and methods, and
generic units. The language treats modularity in the physical sense as
well, with a facility to support separate compilation.
The language provides rich support for real-time,
concurrent programming, and includes facilities for multicore and multiprocessor
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, random number generation, and definition and use
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe