Ada (programming language)
Ada (programming language)
Ada is a high-level, statically typed programming language designed for safety-critical and real-time systems. It was developed in the late 1970s and early 1980s under the auspices of the United States Department of Defense (DoD) to replace hundreds of specialized languages used in defense projects. The language emphasizes reliability, maintainability, and efficiency, and it incorporates strong support for concurrent programming, run-time checking, and exception handling. Ada is named after Ada Lovelace, widely regarded as the first computer programmer.
History
The origins of Ada trace back to 1975, when the DoD initiated a project to unify its diverse programming languages. After a competitive design process, the language designed by a team led by Jean Ichbiah of CII Honeywell Bull was chosen in 1979. The first standard, known as Ada 83, was published in 1983 and adopted as an ANSI and later ISO standard. This version introduced core features such as strong typing, packages, generics, and tasking for concurrency.
Ada 95 was the first major revision, released in 1995, and added support for object-oriented programming, improved interfacing with other languages, and a standardized library. Subsequent revisions include Ada 2005, which enhanced object-oriented and real-time capabilities, and Ada 2012, which introduced contract-based programming through pre- and postconditions. The language is maintained by the Ada Resource Association and the ISO/IEC JTC 1 SC 22 WG 9 working group.
Features
Ada is renowned for its strong typing and compile-time error detection, which helps prevent many common programming mistakes. Key features include:
- Packages – modular encapsulation units that separate interface from implementation.
- Generics – parameterized templates for types, subprograms, and packages, enabling reusablely.
- Tasking – built-in support for concurrent execution using tasks, protected objects, and rendezvous.
- Exception handling – structured error management.
- Contract-based programming (since Ada 2012) – specification of preconditions, postconditions, and type invariants.
- Real-time support – scheduling policies, timing events, and fixed- or floating-point arithmetic.
The language includes extensive run-time checks (e.g., array bounds, null pointer dereferences) that can be selectively disabled for performance in certified systems.
Usage
Ada is widely used in domains where reliability and safety are critical, such as avionics, railway signaling, medical devices, and space systems. Notable projects include the Boeing 777 primary flight control system, the Eurofighter Typhoon avionics, and the International Space Station software. It is also used in financial systems and core infrastructure where correctness is paramount. Development environments include the GNAT compiler (part of the GNU Compiler Collection), AdaCore's toolchain, and various commercial IDEs.