The Kingdom of ADA: History
Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages.
The Ada language is the result of the most extensive and most expensive language design effort ever undertaken. Up until 1974 half of the applications at The Department of Defense were embedded systems. An embedded system is one where the computer hardware is embedded in the device it controls. More than 450 programming languages were used to implement different DoD projects, and none of them were standardized. Because of this, software was rarely reused. For these reasons, the Army, Navy, and Air Force proposed to develop a high-level language for embedded systems.
By 1977, a complete language design specification for Ada was created. In April 1977, four proposing contractors were chosen to produce Phase I of the language design. In February 1977, Phase I of the language design was complete. Following this, was a two month evaluation period where 400 volunteers in 80 teams chose two out of the four as being the best language designs. These two companies were then given the go ahead to produce Phase II of the project. At the end of Phase II, another two month evaluation period took place. In May of 1979 the Cii Honeywell/Bull (the only foreign contractor) language design was chosen as the winner. Phase III of the project began after the winner was selected. After a winner was selected, the language design was published by the ACM. In November 1979, over 500 language reports were received from 15 different countries. Most of the reports suggested minor changes in the design, none real drastic. Based on these suggestions, a revised language design was published in February of 1980. After some minor changes to this document over the next few years, the final official version of the language was settled upon. The Ada language was then frozen for the next five years.
In 1987, the US Department of Defense began to require the use of Ada (the Ada mandate) for every software project where new code was more than 30% of result, though exceptions to this rule were often granted.
By the late 1980s and early 1990s, Ada compilers had improved in performance, but there were still barriers to full exploitation of Ada's abilities, including a tasking model that was different from what most real-time programmers were used to.
The Department of Defense Ada mandate was effectively removed in 1997, as the DoD began to embrace COTS (commercial off-the-shelf) technology. Similar requirements existed in other NATO countries.
Because Ada is a strongly typed language and has other safety-critical support features, it has found a niche outside the military in commercial aviation projects, where a software bug can cause fatalities. The fly-by-wire system software in the Boeing 777 was written in Ada. The Canadian Automated Air Traffic System was written in 1 million lines of Ada (SLOC count). It featured advanced (for the time) distributed processing, a distributed Ada database, and object-oriented design. It is also used to program the processors of the French TVM in-cab signalling system on the LGVs.
In 1995 "Ada 95", the joint ISO/ANSI standard (ISO-8652:1995) was published in February 1995, making Ada 95 the first ISO standard object-oriented programming language. To help with the standard revision and future acceptance, the US Air Force funded the development of the GNAT Compiler. Presently, the GNAT Compiler is part of the GNU Compiler Collection.
The standard "ADA 2005" has been released in 2007.
Ada 2012 is the next generation of ADA
The WG9 committee, after discussions with the ARG and with members of the Ada community, has instructed the ARG to complete the Amendment to Ada 2005 so that ISO standardization of the new version can be completed by 2012. This is a relatively short horizon. but it matches the interval between previous releases, demonstrates that the language continues to evolve with software theory and practice, and at the same time places a bound on the changes to the language, and ensures that they do not present an undue implementation burden on existing compilers.