About Ada Header

Ada is a state-of-the art programming language that development teams worldwide are using for critical software: from microkernels and small-footprint, real-time embedded systems to large-scale enterprise applications, and everything in between.

Why use Ada? In short, because you want to write reliable and efficient code, with confidence that it works, and not waste time and effort in the process. Ada is unique among languages in how it helps you detect and eliminate bugs early in the software life cycle, when they are least expensive to correct. And as evidenced by the many successfully fielded applications that need to meet hard time or space constraints, Ada helps you build software that is reliable, safe and secure without sacrificing performance.

At the technical level, Ada has everything you might expect in a modern language:

  • Extensive compile-time and run-time checks
  • Full Object Oriented Programming support
  • Concurrent programming features, including support for multicore
  • Generic templates
  • Encapsulation
  • Hierarchical program composition / programming-in-the-large

Ada also offers specialized support for systems programming and real-time systems. And the most recent version of the language includes contract-based programming (pre- and postconditions), which in effect makes functional requirements part of the source code where they can be verified by dynamic checks or static analysis.

Beyond the benefits from its specific features, there are other reasons to move up to Ada:

  • Wide range of target processors supported
  • Rich and mature development environments and toolsets
  • Smooth integration into existing projects and ease of interoperating with C and C++
  • Ease of learning
  • Successful track record in the most challenging industries, including domains where safety or security certification is required
  • International standardization (ISO) with controlled maintenance of the Ada standard

Ada Comparison Chart

The following chart provides an overview of evolution of the major features of the Ada programming language.

Programming Structure, Modularity Ada 83 Ada 95 Ada 2005 Ada 2012
Packages check check check check
Child units   check check check
Limited with clauses and mutually dependent specs   check check
Generic units check check check check
Formal packages   check check check
Partial parametrization     check check
Conditional expressions, Case expressions       check
Quantified expressions       check
In-out parameters for functions       check
Iterators       check
Expression functions       check
Object-Oriented Programming Ada 83 Ada 95 Ada 2005 Ada 2012
Derived types check check check check
Tagged types   check check check
Multiple inheritance of interfaces   check check
Named access types check check check check
Access parameters, Access to subprograms   check check check
Enhanced anonymous access types     check check
Aggregates check check check check
Extension aggregates   check check check
Aggregates of limited type     check check
Unchecked deallocation check check check check
Controlled types, Accessibility rules   check check check
Accessibility rules for anonymous types     check check
Preconditions and postconditions       check
Type invariants       check
Subtype predicates       check
Concurrency Ada 83 Ada 95 Ada 2005 Ada 2012
Tasks check check check check
Protected types, Distributed Systems Annex   check check check
Synchronized interfaces   check check
Delays, Timed calls check check check check
Real-Time Systems Annex   check check check
Ravenscar profile, Scheduling policies     check check
Multiprocessor affinity, barriers       check
Requeue on synchronized interfaces       check
Ravenscar for multiprocessor systems       check
Scientific Computing Ada 83 Ada 95 Ada 2005 Ada 2012
Numeric types check check check check
Complex types   check check check
Vector/matrix libraries   check check
Standard Libraries Ada 83 Ada 95 Ada 2005 Ada 2012
Input/output check check check check
Elementary functions   check check check
Containers   check check
Bounded Containers, holder containers, multiway trees       check
Task-safe queues       check
Character Support Ada 83 Ada 95 Ada 2005 Ada 2012
7-bit ASCII check check check check
8/16 bit   check check check
8/16/32 bit (full unicode)   check check
String Encoding package       check

History of Ada

Ada was originally developed in the early 1980s (this version is generally known as Ada 83) by a team led by Dr. Jean Ichbiah at CII-Honeywell-Bull in France. The language was revised and enhanced in an upward compatible fashion in the early 1990s, under the leadership of Mr. Tucker Taft from Intermetrics in the U.S. The resulting language, Ada 95, was the first internationally standardized (ISO) Object-Oriented Language. Under the auspices of ISO, a further (minor) revision known as Ada 2005 was completed as an amendment to the standard. The most recent version of the language standard is Ada 2012, which has introduced full support for contract-based programming (including subprogram pre- and postconditions) among other features.

The name “Ada” is not an acronym; it was chosen in honor of Augusta Ada Lovelace (1815-1852), a mathematician who is sometimes regarded as the world’s first programmer because of her work with Charles Babbage. She was also the daughter of the poet Lord Byron.

Ada in the Community

Ada on Stack Overflow

Stack Overflow is a place to ask questions and get responses from other techies. We highly recommend this resource.

Ada on Reddit

An active community of Ada users on Reddit serve as a valuable resource for anyone interested in Ada.

AdaCore on GitHub

With our commitment to Open Source, AdaCore is a major contributor to GitHub.

@AdaProgrammers

Launched during the Make with Ada competition, the @AdaProgrammers account keeps up an active presence on twitter.

Ada on LinkedIn

With LinkedIn you can connect with Ada developers and employers from around the world.