ISO Approves Ada 2012 Programming Language Standard

By Darryl K. Taft  |  Posted 2012-12-19

ISO Approves Ada 2012 Programming Language Standard

Though somewhat long-in-the-tooth and seemingly past its prime for some uses, the Ada programming language has reached a new milestone as the International Organization for Standardization (ISO) has approved Ada 2012 as a standard.

The Ada Resource Association (ARA) and Ada-Europe on Dec. 18 announced the approval and publication of the latest version of the Ada programming language by the Geneva-based ISO, breathing new life into the language heavily used in the 1980s and 1990s for mission-critical systems.

Ada 2012 brings significant enhancements to Ada, most notably in the area of "contract-based programming."

New features here include the ability to specify preconditions and postconditions for subprograms, and invariants for private, encapsulated types. These take the form of Boolean expressions that can be interpreted, under programmer control, as runtime conditions to be checked. The contract-based programming features fit in smoothly with Ada's object-oriented programming model, and support the type substitutability guidance supplied in the Object-Oriented Technologies and Related Techniques Supplement (DO-332) to the new avionics software safety standard DO-178C/ED-12C.

"AdaCore is pleased to learn that the Ada 2012 standard has been formally approved and published by ISO," Edmond Schonberg, a co-founder of AdaCore and the head of the ISO group that conducted the Ada 2012 work, told eWEEK. "This makes Ada 2012 the first mainstream language to include standard support for contract-based programming, a development style that is becoming increasingly important for systems with demanding requirements for reliability, safety or security."

Other new features in Ada 2012 include enhancements to the containers library, additional expressiveness through features such as conditional expressions and more powerful iterators, and support for multicore platforms. This includes task affinities and the extension of the Ravenscar profile—standardized in Ada 2005 as an efficient and predictable tasking subset for high-integrity real-time systems—to multiprocessor and multicore environments.

"Contract-based programming in effect allows the developer to specify software requirements as part of the source program, where they can be verified by the compiler or checked at runtime," Schonberg said. "An example of a contract is a function's preconditions [what the function assumes] and its postconditions [what it promises].

"The new news here, which distinguishes Ada from other languages, is that contracts are part of the standard language syntax and semantics where they can be exploited by the compiler," he continued. "Further, this feature is integrated carefully into the existing language framework, for example, the object-oriented programming facility, which is a major advance in the state of the art."

Ada 2012 is a big step in the state of the art in programming languages, Schonberg explained. "The new features answer real user needs, and help cement Ada's reputation as a language of choice for systems where reliability, safety and security are paramount," he said.

Ada is typically used for complex systems. Ada 2012 can be applied both in industry for production software development, and in academia for teaching and research. Indeed, Ada is seeing significant use worldwide in high-integrity, safety-critical, high-security domains, including commercial and military aircraft avionics, air traffic control, railroad systems and medical devices. With its embodiment of modern software engineering principles, Ada is a good teaching language for both introductory and advanced computer science courses and research, particularly in the area of real-time technologies.

ISO Approves Ada 2012 Programming Language Standard

Prominent Ada users include the Federal Aviation Administration (FAA) for many of its air-traffic-control systems. Many aviation systems suppliers and airplane makers use Ada for avionics systems. And several railway systems around the world, including the New York City subway, use Ada in their core apps. In addition, NASA utilizes Ada in many of its systems, and a host of military command and control systems employ the language.

"Every time I fly, I am comforted by the fact that most of the world's air-traffic-control systems have Ada in them," said Grady Booch, chief scientist for software engineering at IBM Research and author of the book "Software Engineering with Ada" published in 1983.

AdaCore, which has dedicated itself to Ada, has a long history and close connection with the Ada programming language and makes and sells the GNAT Pro and a host of other tools. GNAT was initially known as the GNU NYU Ada Translator. AdaCore employees worked on the original Ada 83 design and review, played key roles in the Ada 95 project and Ada 2005 effort, and are now deeply involved with the Ada 2012 revision.

"Ada 2012 is the logical next step along Ada's trailblazing path toward supporting high-integrity programming," said S. Tucker Taft, director of language research at AdaCore. "By integrating contract-based programming features directly in the language, Ada remains the model for combining industrial-strength safety and security with the flexibility and expressiveness needed for building today's most challenging applications."

Moreover, Ada offers an "excellent match to two major trends in technology: the increasing reliance on software for safety and security-critical systems, and the movement toward multicore architectures for performance," Schonberg said. "Ada was designed with reliability as a major goal; vulnerabilities that are commonplace in other languages—such as the notorious 'buffer overflow' problem—do not arise in Ada. And as just noted, the provision of contract-based programming puts Ada in the forefront of language technology for reliable systems.

"Ada's concurrency model, coupled with explicit features for multicore support, make it a practical solution for today's hardware platforms. Further, Ada 2012 is not simply an ISO standard; it's a language that is available now with a production implementation in AdaCore's GNAT Pro development environment," he continued.

In addition to Ada's continued use in its traditional domains, including aerospace, defense and transportation, there is new interest from other fields such as finance, automotive and medical devices, Schonberg said.

"In short, Ada is viable as a development language now more than ever, with features that respond to real requirements and with implementations that are available today," he said.

ISO Approves Ada 2012 Programming Language Standard

Ada is a structured, statically typed, imperative, wide-spectrum and object-oriented high-level computer programming language, extended from Pascal and other languages. It has strong built-in language support for explicit concurrency, offering tasks, synchronous message passing, protected objects and nondeterminism. Ada was originally designed by a team led by Jean Ichbiah of CII Honeywell Bull under contract to the United States Department of Defense from 1977 to 1983 to supersede the hundreds of programming languages then used by the DOD.

The programming language was named after Ada Lovelace, 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. Ironically, the Ada 2012 standard announcement comes just days after Lovelace's Dec. 10 birthday.

Ada was originally targeted at embedded and real-time systems. The Ada 95 revision, designed by S. Tucker Taft of Intermetrics in the early 1990s, improved support for systems, numerical, financial and object-oriented programming (OOP).

Ada is designed for the development of very large software systems. Ada packages can be compiled separately, and their specifications can also be compiled separately without the implementation to check for consistency. This makes it possible to detect problems early during the design phase, before implementation starts. The Ada programming language is designed for large, long-lived applications—and embedded systems in particular—where reliability and efficiency are essential.

The language revision, known as Ada 2012, was under the auspices of ISO/IEC JTC1/SC22/WG9 and was conducted by the Ada Rapporteur Group (ARG) subunit of WG9, with sponsorship in part from the ARA and Ada-Europe.

ISO and the International Electrotechnical Commission (IEC) are the two primary organizations for international standardization. They resolve the problem of overlapping scope by forming a Joint Technical Committee, JTC1, to deal with all standardization in the scope of information technology. JTC1 deals with its large scope of work by subdividing the responsibility among a number of subcommittees.

SC22—which deals with programming languages, their environments and system software interfaces—is the parent body of WG9. In turn, SC22 subdivides its scope of work among several Working Groups. WG9 is responsible for the "development of ISO standards for programming language Ada." That gives you ISO/IEC JTC1/SC22/WG9. The formal approval of the standard was issued Nov. 20 by ISO/IEC JTC 1, and the standard was published Dec. 15.

A technical summary of Ada 2012, together with an explanation of the language's benefits and a set of links to further information, is available at, which the Ada Resource Association maintains.

Rocket Fuel