|
|   |
, Distributed , Generic-programming , Imperative , Object-oriented
|
|   |
1983, last revised 2005
|
|   |
Jean Ichbiah , extended<br>by S Tucker Taft
|
|   |
Static , Strong , Safe , Nominative
|
|   |
GNAT
|
|   |
Ada&nbsp83, Ada&nbsp95, Ada&nbsp2005
|
|   |
ALGOL 68 , Pascal , C++ &nbsp(Ada&nbsp95), Smalltalk &nbsp(Ada&nbsp95), Java &nbsp(Ada&nbsp2005)
|
|   |
C++ , PL/SQL
|
is a
Structured ,
Statically Typed ,
Imperative , and
Object-oriented High-level Computer Programming Language . It was originally designed by a team led by
Jean Ichbiah of
CII Honeywell Bull under contract to the
United States Department Of Defense during
1977 –
1983 to supersede the hundreds of programming languages then used by the DOD. Ada addresses some of the same tasks as
C or
C++ , but Ada is
Strongly-typed (even for integer-range), and compilers are validated for reliability in mission-critical applications, such as
Avionics software. Ada was named after
Ada Lovelace , who is often credited with being the first computer programmer.
Ada is an international standard; the current version (known as Ada 2005) is defined by joint ISO/ANSI standard (
ISO-8652:1995 ), combined with major Amendment
ISO/IEC 8652:1995/Amd 1:2007 .
Ada was originally targeted at
Embedded and
Real-time systems. The Ada 95 revision, designed by
S. Tucker Taft of
Intermetrics between
1992 and
1995 , improved support for systems, numerical, financial, and
Object-oriented Programming (OOP).
Notable features of Ada include:
Strong Typing ,
Modularity Mechanisms (packages),
Run-time Checking ,
Parallel Processing (tasks),
Exception Handling , and
Generic s. Ada 95 added support for
Object-oriented Programming , including
Dynamic Dispatch .
Ada supports run-time checks in order to protect against access to unallocated memory,
Buffer Overflow errors,
Off By One Errors , array access errors, and other avoidable bugs. These checks can be disabled in the interest of runtime efficiency, but can often be compiled efficiently. It also includes facilities to help program verification. For these reasons, Ada is widely used in critical systems, where any
Anomaly might lead to very serious consequences, i.e., accidental death or injury. Examples of systems where Ada is used include
Avionics , weapons (including
Thermonuclear Weapons ), and spacecraft.
Ada also supports a large number of compile-time checks to help avoid bugs that would not be detectable until run-time in some other languages or would require explicit checks to be added to the source code.
Ada's dynamic
Memory Management is high-level and type-explicit, requiring explicit instantiation of the Unchecked_Deallocation package to explicitly free allocated memory. The specification does not require any particular implementation. Though the semantics of the language allow automatic
Garbage Collection of inaccessible objects, most implementations do not support it. Ada does support a limited form of
Region-based Storage Management . Invalid accesses can always be detected at run time (unless of course the check is turned off) and sometimes at compile time.