|RPN in Ada|
The language was designed in the late 1970s under a series of progressively refined sets of requirements, for the needs of the U.S. Department of Defence. A major goal pursued by its authors and the DoD was to support, and where possible ensure, creation of safe and reliable software. Ada has strong typing and a very strict type checking. Many kinds of errors are detected at compile-time, still others at run-time. Run-time errors are typically dealt with through exception handling.
Ada is one of the first languages (though not the first) to feature generic programming.
There are three kinds of program units in the language: procedures, tasks, and packages. Tasks are the units of concurrent execution. Packages provide modular structure for the program, and are often used to implement abstract data types. A package can have separately compiled specification and implementation instances.
The syntax is Algol-like, with closing keywords for each construct.
Ada has an elaborate model of concurrency, bazed on rendezvous.
The following standards / revisions mark the evolution of the language: Ada 83, Ada 95, Ada 2005. Currently (2008), Ada 95 is implemented by the available compilers, and support for Ada 2005 is widening.
Two languages known to have influenced the creation of Ada are Pascal and Euclid. Probably CLU was another source of influence (regarding generic programming).
My, and other people's impression is that the language is somewhat wordy and ‘bureaucratic’. For example, much of the program may go into ensuring that values are properly (i.e., consistently etc.) typed; one may need to introduce auxiliary data objects, convert between similar but different types etc.). Another possible issue with the language is its complexity.
On the other hand, compiler diagnostics are usually very informative – rather impressively so, compared to most other languages.
Ada's standard libraries have been somewhat insufficient so far (apart from also being unusual, maybe), but this is very much improved now in Ada 2005, especially with the inclusion of generic containers.
A portal to resources at AdaIC (see above)
GCC, the GNU Compiler Collection has a front-end for Ada
AdaPower: Ada Tools and Resources
Software, books, links (in Russian)
An article on Ada in general, the Ada 2005 amendment and the GNAT Pro compiler