The Ada Programming Language
Named in honor of Lady Ada, the Ada language was designed for developing reliable, safe and secure software. It has been updated several times since its initial inception in the 1980s and is a language of choice for high-integrity real-time systems. Today Ada is widely used around the globe, for developing critical systems in both government and commercial domains and for teaching and research in university computer science programs.
The Ada language effort was an attempt to address the proliferation of programming languages and dialects that plagued the U.S. Department of Defense (DoD) in the 1960s and early 1970s. Project-specific language extensions or subsets meant that source code could rarely be reused or ported across different platforms. To address this issue, a set of requirements (language feature functionality) for real-time embedded systems was formulated, reviewed, and revised in a multistage process.
Four contractors were selected for the initial design phase, and to ensure an unbiased review they were identified only by colors in public documents. CII-Honeywell Bull was Green, Intermetrics was Red, SofTech was Blue, and SRI was Yellow. In March 1978 two languages (Green and Red) were selected for the second phase of the design, which lasted one year.
Although sponsorship was through the US DoD, there was strong international involvement, especially from NATO countries, in both the development and review of the language design.
At a café on the Champs Elysées in Paris, representatives from the language design’s sponsoring organizations met and considered an appropriate name for the new language. “Ada”, suggested by Cmdr. Jack Cooper from the U.S. Navy in honor of Augusta Ada Lovelace, received consensus.
To coordinate Ada policy across the US DoD, a program office was formed under the direction of Larry Druffel.
SIGAda — ACM’s Special Interest Group on the Ada Programming Language — was formed as a focal point for the Ada community. SIGAda conducts periodic conferences and workshops and publishes a technical newsletter (Ada Letters).
Ada-Europe is an international organization that aims to spread the use and knowledge of Ada and to promote its introduction into academic and research establishments. Ada-Europe represents European interests in Ada and Ada-related matters and holds an annual technical conference.
The ACVC (later known as the ACATS, or Ada Conformance Assessment Test Suite) comprises an extensive set of tests that an implementation needs to pass in order to be considered conformant with the language standard.
Ada was the focus of a series of major conferences and trade shows starting in the mid 1980s, first Ada Expo and then TRI-Ada, featuring key government and industry representatives and attracting several thousand attendees.
Ada was the first widely used language available on the PC platform that allowed users to take advantage of the full 20-bit extended memory address space of the 80286.
Although originally sponsored by government defense agencies, the Ada language spread into commercial use. One of the most significant commercial applications was the Boeing 777 airplane, whose software was written largely in Ada.
Technological advances since the initial Ada design spurred a language revision effort which culminated in a major new version of the standard, Ada 95. New features included support for Object-Oriented Programming, a more general separate compilation facility, a structured mechanism for state-based mutual exclusion, and specialized support for systems programming, real-time systems, and other areas.
AdaCore was founded by members of the New York University Computer Science department with the goal of commercializing the language technology that they had developed for Ada 95.
AdaCore’s European company was founded by computer scientists who had worked on the GNAT technology at NYU.
Named for the venue of the workshop in the UK where it was first proposed, the Ravenscar profile was a major breakthrough in language technology. It comprises a set of concurrency features that can be used in real-time applications with stringent memory constraints and/or safety certification requirements.
Among its various enhancements Ada 2005 introduced abstract interface types similar to Java interfaces, integrated the concurrency features with object-oriented programming, and extended the predefined library with generic containers and other packages.
Ada 2012 added support for contract-based programming (preconditions, postconditions, type invariants) and a number of other features including enhancements in the area of real-time programming and multicore support.
SIGAda initiated a new series of conferences, looking more broadly at the issues underlying the development of critical systems such as those requiring safety or security certification. Keynote speakers included Barbara Liskov and Nancy Leveson from MIT
The SPARK language was originally designed as an Ada language subset augmented with annotations to facilitate mathematical proofs of program properties ranging from absence of run-time errors to compliance with a formal specification. SPARK 2014 takes advantage of Ada 2012’s new features (most notably its support for contract-based programming) to replace the annotations with Ada-compliant syntax. SPARK and Ada can be combined, and verification can use a mix of traditional methods (testing) and formal proof-based techniques.