0.1. 🏛 History and influence - JulTob/Ada GitHub Wiki

History and influence

👸đŸģ The first Ada standard was issued in 1983; it was subsequently revised and enhanced in 1995, 2005 and 2012, with each revision bringing useful new features:

👩đŸģ‍đŸĢ The story of Ada goes back to about 1974 when the United States Department of Defense realized that it was spending far too much on software, especially in the embedded systems area.

👩đŸģ‍✈ī¸ Ada was originally sponsored by the US Department of Defense for use in the embedded system application area. An embedded system is one in which the computer is an integral part of a larger system such as a chemical plant, missile, or dishwasher.

👩đŸģ‍⚖ī¸ While Ada was originally targeted at embedded and real-time systems, the Ada95 revision added support for object-oriented (including dynamic dispatch), numerical, financial, and systems programming.

👮đŸģ‍♀ī¸ 2012: Introduces Contract Programming. Valuable to any project where verification is part of the engineering lifecycle.

Ada83 showed programmers how programming in the large should be organized (packages, strong typing, privacy) and convinced them that indices out of range were not a common pitfall of programming but elementary errors that could be controlled with proper declarations and constraint checking.
Ada 83 also put concurrent programming in a mainstream programming language.

Ada95 benefited from a decade-long development in object-oriented programming techniques and successfully grafted the ideas of polymorphism and dynamic dispatching onto a strongly-typed language with concurrency. It enhanced programming-in-the large capabilities with child units and their generic incarnations.

Ada2005 showed how data-based synchronization (protected types) and concurrency (task types) could be unified through a novel use of interface inheritance, and adopted a conservative model of multiple inheritance of interfaces that has proved more robust than the more unrestricted models of MI.

Ada2005 also introduced into the language an extensive container library, following here the example of other established languages and many earlier experimental high-level languages that showed the usefulness of reasoning over data aggregates.