Ada 2012

Engineering Reliability

Ada 2012 is the next generation of the world’s premier programming language for engineering safe, secure and reliable software.

In an era where software is literally touching every part of our lives, the need for safe and secure software has never been more relevant and more urgent. With decades of success in industries including avionics, aerospace, and defense, Ada is generating new interest in domains such as automotive, medical, and financial systems, where the cost of software errors can range from lost livelihoods to lost lives.

Explore this site and learn about the features and benefits of Ada and why you should consider Ada 2012 for your next project.


The Ada 2012 Story.

Watch the Film ▶


What's new in Ada 2012?

Contract-based Programming

  • Preconditions and postconditions define the expectations and obligations of a subprogram.
  • Type invariants specify boundary constraints for objects of an encapsulated (private) type.
  • Subtype predicates capture general constraints on data objects.

Increased Expressiveness

  • Expression functions offer a convenient way to express simple functions.
  • Conditional expressions provide a compact notation for a common idiom.
  • Quantified expressions for universal and existential forms specify predicates over arrays and containers.

Concurrency and Multicore Support

  • Task affinities and dispatching domains allow tasks to be mapped to specific CPUs or cores.
  • Ravenscar for multiprocessor systems adapts a safe and widely used tasking profile to modern architectures.

Container Enhancements

  • Bounded containers use stack allocation and do not incur the overhead of dynamic memory management.
  • Task-safe queues and priority queues provide efficient implementations of synchronized structures.
  • Holder containers create singleton structures for objects of an unconstrained type.
  • Iterators provide familiar idioms with uniform syntax to search and manipulate arrays and containers.

Why use Ada for your project?

Development cost savings

For most large, long-lived systems the major effort arises not so much in the initial coding stage but rather during testing / quality assurance, functionality upgrades, porting to new platforms, and similar "back end" activities. Ada was specifically designed to address these issues and does so more effectively than other languages. An Ada compiler will often detect errors that with other languages would only be discovered during testing and debugging.

Successful usage in practice

Ada has always been an attractive choice in application domains where reliability (versus, say, quickness to market) has been an overriding requirement. Ada enjoys a strong presence in domains such as avionics, space systems, shipboard systems, nuclear reactor control, train and subway systems, and command and control.

Maturity of language and implementations

Ada has evolved since its initial development in the early 1980s, with three subsequent revisions that have reflected the needs of its users and the changing state of software technology. At each new version of the standard, careful attention was paid to practical issues such as the effect of proposed language features on run-time efficiency. The language implementation technology is mature, with a strong track record in large and long-lived critical systems.

Status as International Standard

Unlike other languages that have achieved standardization only after implementations have become widespread, Ada was standardized first and implemented later. This approach has avoided the technical and political problems of trying to define the syntax and semantics of features that were implemented in incompatible ways.

Interoperability with other languages

It is rare, especially in large systems, for the software to be developed solely in one programming language. Ada is unique in having standard features for interfacing with other languages. This makes it easier to develop multi-language systems.

Ease of training programmers

Ada is designed to support sound software engineering practice, and its features follow consistent principles that are intuitive and easy to learn.

Visit AdaCore’s interactive learning platform designed to teach the Ada and SPARK programming languages.