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.

Links of Relevance

Ada Home: ‘The web site for Ada’
ADA 95 reference manual
The ‘Steelman’ requirements document for Ada 83, and a comparison of several languages with respect to it
Ada resources at the Software engineering laboratory of Ecole Polytechnique Fédérale de Lausanne
ADA 95 reference manual
Ada 95 Rationale for the language and the standard libraries
AdaIC: a lot of useful information, standards, books, links
Ada 2005 Lang. Ref. Man. (LRM), also in an annotated version (AARM)
Rationale for Ada 2005
Ada 95 quality and style guide: guidelines for professional programmers: an online book (also here in PDF)

A portal to resources at AdaIC (see above)

AdaCore: develops and sells GNAT Pro – Ada compiler, tools and libraries
Reading resources on Ada 2005
The Libre Site: the GPL edition of GNAT – a free compiler for Ada, plus the GNAT Programming Studio (GPS) IDE

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