Ada: Overview
Ada is a compiled, statically typed language designed for software that must not fail. It runs air-traffic systems, avionics, railway signaling, spacecraft, and medical devices — everywhere a defect costs more than a delay. This page explains why Ada exists, where it runs today, and how the rest of this track is organized.
Why Ada Exists
Ada was commissioned by the United States Department of Defense in the late 1970s because its embedded software was written in dozens of incompatible languages. A design competition led by Jean Ichbiah produced the language, which became a military standard in 1983. It was named after Ada Lovelace, the first person to describe a program for a machine.
The design goal was never convenience — it was defect reduction before shipment. Ada achieves it with three mechanisms that most mainstream languages still lack:
- Strong static typing with programmer-defined ranges. A
Day_Of_Monthtype that only accepts 1..31 rejects an invalid date at compile time or the instant it is assigned — not during a 3 a.m. production outage. - Explicit contracts between program units. Packages, preconditions, and postconditions state what each unit promises, and the compiler verifies both sides of the promise.
- Built-in concurrency. Tasks, entries, and protected objects are part of the language, so synchronization is visible in the source instead of hidden inside a library.
The standards
Ada is an ISO standard, revised roughly every decade: Ada 83, Ada 95 (object-oriented, child libraries), Ada 2005, Ada 2012 (contracts as aspects, which this track teaches), and Ada 2022 (the current revision). The reference manuals are freely available online — this track targets Ada 2022 and notes version differences where they matter.
Where Ada Runs Today
Ada is invisible when it works — which is the point. Representative domains include:
- Avionics and space: flight-control software, the European Space Agency's launchers and probes, aircraft autopilots.
- Rail and air-traffic control: signaling interlocking systems across Europe and North America.
- Medical and automotive: pacemakers, infusion pumps, engine controllers — anywhere a recall costs lives.
- Security-critical infrastructure: secure payment terminals and cryptographic co-processors.
Learning Ada therefore teaches something transferable: how to structure a program so that entire classes of bugs are impossible to write, whatever language you ship in.
The Toolchain at a Glance
Ada compiles to native machine code. The dominant compiler is GNAT, the Ada front end of GCC — free software, available on every major OS. Around it sit two tools you will meet on the Setup page: Alire, the package manager that fetches libraries, and GPRbuild, the build engine that compiles units in dependency order.
The pipeline below is the whole story: source files go in, a checked native executable comes out.
How the Track Is Organized
The track moves from foundations to expert-level design in seven phases:
| Phase | Contents | You can… |
|---|---|---|
| 1. Foundations | Overview, toolchain, syntax | Run a compiled Ada program you wrote yourself |
| 2. Basic Constructs | Types, expressions, conditionals, loops, strings, enumerations | Express everyday logic safely |
| 3. Data & Logic | Arrays, records, access types, subprograms, I/O | Model real data and decompose problems |
| 4. Modular Systems | Packages, exceptions, generics, visibility | Build multi-unit libraries with real interfaces |
| 5. Advanced Paradigms | OOP, contracts, tasking, standard library | Design concurrent, provable systems |
| 6. Practice & Demos | Lab examples, study projects, open source projects | Read and extend real Ada code |
| 7. Reference | References and free resources | Keep learning after the track |
Each lesson pairs prose with commented, compilable examples, and the Lab Examples page collects runnable single-file demos you can open in the site's code viewer.