Ada 95

Other Free Books!
Free Computer Books Alliance
Agile Programming
3D Rendering
3D Graphics Libraries
Remember that these titles are copyright © the author or the publisher. The author / publisher has generously allowed them to be available for free online. Please respect the terms and conditions of the copyright.

If you know of a quality book that we should include on this page, please let me know.


Understanding Programming Languages M. Ben-Ari
Ada for Software Engineers M. Ben-Ari
Ada 95 : The Craft of Object Oriented Programming by John English
Ada 95 Distilled by Richard Riehle
Ada 95 Language Reference Manual The MITRE Corp., Inc.
Ada 95 Rationale: The Language, The Standard Libraries Intermetrics, Inc.
Object-Oriented Programming in Ada 95 by Michael A. Smith
Introducing Ada 95 by John Barnes

Non-Book Resources
Ada in Switzerland An interest group of the Swiss Informatics Society (SI), and it is a member society of the Ada-Europe organization.

Ada is a structured, statically typed imperative computer programming language designed by a team led by Jean Ichbiah of CII Honeywell Bull under contract to the United States Department of Defense during 1977–1983. It addresses many of the same tasks as C or C++, but with one of the best type-safety systems available in a statically typed programming language. Ada was named after Ada Lovelace, who is often credited with being the first computer programmer.

Ada was originally targeted at embedded and real-time systems. The Ada 95 revision, designed by S. Tucker Taft of Intermetrics between 1992 and 1995, improved support for systems, numerical, and financial programming.

Notable features of Ada include strong typing, modularity mechanisms (packages), run-time checking, parallel processing (tasks), exception handling, and generics. Ada 95 added support for object-oriented programming, including dynamic dispatch.

Ada supports run-time checks in order to protect against access to unallocated memory, buffer overflow errors, off by one errors, array access errors, and other avoidable bugs. These checks can be disabled in the interest of efficiency, but can often be compiled efficiently. It also includes facilities to help program verification. For these reasons Ada is widely used in critical systems, where any anomaly will lead to very serious consequences ie accidental death or injury. Examples of systems where Ada is used include avionics, weapons (including thermonuclear weapons) and spacecraft.

Ada also supports a large number of compile-time checks to help avoid bugs that would not be detectable until run-time in some other languages or would require explicit checks to be added to the source code.

Ada's dynamic memory management is safe and high-level, like Java and unlike C. The specification does not require any particular implementation. Though the semantics of the language allow automatic garbage collection of inaccessible objects, most implementations do not support it. Ada does support a limited form of region-based storage management. Invalid accesses can always be detected at run time (unless of course the check is turned off) and sometimes at compile time.

The syntax of Ada is simple, consistent and readable. It minimizes choices of ways to perform basic operations, and prefers English keywords (eg "OR") to symbols (eg. "||"). Thus it avoids terse constructs such as "||", "++", and "+=" (of the C language), and enforces that each conditional statement be closed. The rationale is that code for a complex system must be readable by reviewers and maintainers. Reviewers may include domain experts who are not highly software literate. Code for complex systems is typically maintained for many years, by programmers other than the original author. It can be argued that the language design benefits apply to most software projects, and most phases of software development, however when applied to complex, safety critical projects, benefits in correctness, reliability, and maintainability take precedence over (arguable) costs in initial development.

Unlike most ISO standards, the Ada language definition (known as the Ada Reference Manual or ARM, or sometimes the Language Reference Manual or LRM) is free content. Thus, it is a common reference for Ada programmers, not just programmers implementing Ada compilers. Apart from the reference manual, there is also an extensive rationale document which explains the language design and the use of various language constructs. This document is also widely used by programmers. When the language was revised, a new rationale document was written.