Ada: A Programmer's Conversion Course may not now be as famous as Ada as a Second Language written by Norman H. Cohen of IBM and published by McGraw Hill (Ada 83 edition, 1986, 0 07 011589 3; Ada 95 edition, 1996, 0 07 011607 5) and Ada 95 for C and C++ Programmers by Simon K. Johnston (Addison Wesley, 1997, 0 201 40363 3). However, it just might be the only such book you can get.
Ada: An Introduction is also older than the standardisation date of 17th February 1983. The minuscule prematurity seems to have given it an advantage because it suffers fewer inaccuracies than the Stratford-Collins book. Henry Ledgard's book is not a first-language introduction to programming.
Henry Ledgard wrote a pleasant book. Nice as it is to read, not all of its points will be readily locatable. For example, only in a chapter on exceptions following a chapter on tasking, does it show how to abort a task in dire circumstances. Its advice on aborting is good but ill-placed. Elsewhere the author did give appropriate notice of important remaining business to be found later in the book.
An omission he is guilty of is the feature of generics. In addition to that, though he illustrated a number of his points with programs that are otherwise completely compilable, he used a non-existent I/O package. This is not due to an out-of-date draft standard, rather he suggested instead of relying upon the standard's provisions, your vendor might provide a library such as his make-believe one!
The slim Ada: A Programmer's Conversion Course contains a chapter on generics. Alas though the book contains important information on a variety of facets of what was becoming Ada, not all of it is pointed out or explained. Such swiftness of presentation can lead to confusion. Since it is aimed at people who are already programmers, powers of deduction are credited to the reader. Such fending for oneself can lead to incorrect conclusions. For example, owing to preceding spelling mistakes in the text, elsif may be thought of as a misspelling for a more English-looking alternative. After all, the author did not explicitly point out that it is not elseif.
A more serious deficit, for which a compilation experiment will not correct any suspicions, is on page 81. Coming promptly after the introduction of the context specification keyword use, we see the completely different representation clause use keyword appearing for the only time in the book. Representation clauses are not mentioned at all and worse the example actually involves packages.
The formal syntax rules for the various species of representation clause are listed in the appendix on formal syntax (which contains no English, just rules like assignment_statement ::= variable_name := expression;). It is entirely up to you to know what they mean and that they are even there. To look them up, you would be using the appendix as a reference to the language and would need to know more about the language than is taught in the body of the book.
Many of the sample source code excerpts in Ada: A Programmer's Conversion Course convey the notions of the language. All too often though, they would require considerable work to transform them from scratch into demonstrable running programs.
The relatively large sample program at the back of the Ledgard book is presented in a highly unfit state. In the rest of the book there were at most two or three spelling mistakes. The program is another story and is not representative of the quality of the rest of the book. One package specification contradicts its body. An incorrect attempt at bringing in a loop parameter went for line_count := 1 tonext_command.argument loop. Custom datatypes are used for variables in the source, but are never defined so obviously the compiler will object. One of the standard's datatypes is ignored so you have to insert your own conversions or rewrite variables to be declared as compatible types. The large sample program used the fictitious I/O package. And so on. It is not worth the hassle fixing it to be a valid program.
Neither of the books comes with a chart or appendix dedicated to guiding a reader from any particular languages. Unless you are trying to educate a FORTRAN user, this is no great loss today accepting that today's mainstream languages did not exist back then.
XML and related topics