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
Read the study by VDC research about Ada's impact on controlling costs »
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 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.