Other Free Books!
Free Computer Books Alliance
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|
|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.