From: M.Kempe@ieee.org (Magnus Kempe)
Newsgroups: comp.lang.ada,comp.edu,comp.answers,news.answers
Distribution: world
Subject: Ada FAQ: Learning Ada
Followup-To: poster
Reply-To: M.Kempe@ieee.org (Magnus Kempe)
Summary: Learning Ada Frequently Asked Questions (and answers).
Please read before posting.
Does *not* get into Ada programming questions
[for that see the companion Ada/programming FAQ].
Keywords: advanced language, artificial languages, computer software,
data processing, programming languages, learning, tutorials, Ada
Organization: None
Archive-name: computer-lang/Ada/learning
Comp-lang-ada-archive-name: learning
Comp-edu-archive-name: learning-Ada
Posting-Frequency: monthly
Last-modified: 29 June 1997
Last-posted: 31 May 1996
Learning Ada
Frequently Asked Questions (FAQ)
Recent changes to this FAQ are listed in
the first section after the table of contents.
This document is under explicit copyright.
Introduction
This is a list of resources to learn Ada. This list includes interactive
tutorials, books, source code collections, etc.
Ada is an advanced, modern programming language, designed and
standardized to support and strongly encourage widely recognized
software engineering principles:
reliability, portability, modularity, reusability, programming as a
human activity, efficiency, maintainability, information hiding,
abstract data types, genericity, concurrent programming,
object-oriented programming, etc.
All validated Ada compilers (i.e. a huge majority of the
commercial Ada compilers) have passed a controlled validation process
using an extensive validation suite. Ada is not a superset or
extension of any other language. Ada does not allow the dangerous
practices or effects of old languages, although it does provide
standardized mechanisms to interface with other languages such as
Fortran, Cobol, and C.
Ada is recognized as an excellent vehicle for education in programming
and software engineering, including for a first programming course.
Ada is defined by an international standard (the language reference
manual, or LRM), which has been revised in 1995. Ada is taught and
used all around the world (not just in the USA). Ada is used in a
very wide range of applications:
banking, medical devices, telecommunications, air traffic control,
airplanes, railroad signalling, satellites, rockets, etc.
Maintenance
This FAQ is maintained on an individual volunteer basis, by Magnus Kempe
(M.Kempe@ieee.org).
The latest version of this FAQ is always accessible through the Web as
http://www.adahome.com/FAQ/learning.html#title
hosted by the Ada Home,
http://www.adahome.com/
Report of a product, service, or event, etc., does not
constitute an endorsement. Opinions (if any) expressed are those of
the submitters and/or maintainer.
- 970629: re-synchronized list of Ada 95 books.
- 960531: updated list of tutorials.
- 960522: approved for posting in *.answers.
- 960309: added list of Ada 95 books.
- 960128: created, with contributions from David Wheeler and Mike Feldman.
(Up to Table of Contents)
This file is posted monthly to
comp.lang.ada,
comp.edu,
comp.answers,
and
news.answers.
This document has a home on the Home of the Brave Ada Programmers (HBAP)
WWW Server, in hypertext format, URL
http://www.adahome.com/FAQ/learning.html#title
It is available --as posted in *.answers-- on rtfm.mit.edu,
which archives all FAQ files posted to *.answers; see directory
ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/computer-lang/Ada
The text-only version is also available in directory
ftp://ftp.adahome.com/pub/FAQ
Magnus Kempe maintains this document; it's a hobby, not a job.
Feedback (corrections, suggestions, ideas) about it is to be sent
via e-mail to
M.Kempe@ieee.org
Thanks.
In all cases, the most up-to-date version of the FAQ is the version
maintained on the Ada Home WWW Server. Please excuse any formatting
inconsistencies in the posted, text-only version of this document, as
it is automatically generated from the on-line, hypertext version.
(Up to Table of Contents)
There are many ways to learn Ada.
Here are some on-line Ada tutorials expressly designed for self-study:
- Lovelace
is a free (no charge) self-directed Ada 95 tutorial
available on the World Wide Web (WWW), at
http://www.adahome.com/Tutorials/Lovelace/lovelace.html
Lovelace assumes that the user already knows some other algorithmic
programming language (such as C, C++, or Pascal).
Lovelace is interactive; it contains a number of short sections, and most
short sections end with a question (to help ensure that you've understood
the section's material).
Lovelace can be used directly from the WWW (see above),
downloaded from
http://www.adahome.com/Tutorials/Lovelace/download.html
or run from a CD-ROM, described at
http://ftp.cdrom.com/titles/ada.html
Lovelace was developed by David A. Wheeler.
- Learn Ada on the Web (LAW)
by Dr. Fintan Culwin was developed to freely
provide Ada training on the World Wide Web, at URL
http://www.scism.sbu.ac.uk/law/lawhp.html
LAW is concerned with initial software development education rather
than with helping programmers who already know other computer languages.
Also, LAW is concerned as much
with providing software engineering tools over the Web as with presenting
information regarding Ada.
Dr. Culwin believes that the Lovelace and LAW projects
are complementary rather than needless duplication of each other, since
their target users are so different.
LAW includes an interesting capability to interactively create Ada
programs remotely over the Web; you might want to use this LAW
capability even if you choose to use another tutorial.
Dr. Culwin is at South Bank University, London, and may be contacted at
fintan@vax.sbu.ac.uk
- Coronado Enterprises Tutorials
are shareware tutorials.
Their tutorial of interest to us is
an Ada 83 tutorial
located at
http://www.swcp.com/~dodrill/adalist.html
(the suggested fee is US$15)
- The
C/C++
Programmers Ada Tutorial
is a short hypertext tutorial, located at
http://www.adahome.com/Ammo/cpp2ada.html
for programmers who have a C or C++ style programming language background.
It was written by Simon Johnson, with some additional text by Tucker Taft.
- Ada-Tutr is
a shareware interactive Ada tutor developed by
John Herro of
Software Innovations Technology.
You can download it from the Ada-Tutr web site, at
http://members.aol.com/AdaTutor/sit.htm
or the Ada-Tutr ftp site, located at
ftp://members.aol.com/AdaTutor/sit.htm
You can also download it by calling the
SaddleBag BBS, 1-407-773-0831, and log in with
the name Ada Tutor and the password tutor.
The
Public
Ada Library's copy of Ada-Tutr
(mirror)
is another way to retrieve Ada-Tutr.
There is also
an
older version of Ada-Tutr for Ada 83
(mirror).
AdaTutr has a number of exercises that give a more complete understanding
of Ada but will take more time to complete than a tutor without such exercises
(such as Lovelace).
- HOT_Ada, a two-volume course/tutorial distributed on floppy
disks, is available from Stage Harbor Software;
it is not directly available via the WWW.
It does not include a compiler. It is similar to a
set of tutorial slides, except for the hyper-linking features
and the fact that you can proceed at your own pace and
accommodate your own learning style and needs.
HOT_Ada is designed for individual, self-paced learning. One
version runs on Macintoshes, another on PCs with Windows. The many
hypertext and hypergraphic features allow you, for instance, to
click on a "hot word" to see its definition in the Glossary or
click on a "hot icon" in a diagram to jump to the corresponding
line of Ada source code in a previously hidden listing.
The regular price is $29 for a single volume, $49 for the
two-volume set.
E-mail inquiries welcomed at: bscrawford@aol.com. Regular mail
inquiries or mail orders (specify Mac or Windows, personal checks
accepted) can be sent to:
Stage Harbor Software
9 Patriots Drive
Lexington, MA 02173
What does the course cover?
HOT_Ada is a two-volume course/tutorial, distributed on floppy
disks. Volume 1, the "core" part of the course, provides a
pictorial introduction to object technology (OOA and OOD
presented in a language-independent manner) and a pictorial
introduction to Ada 9X, with emphasis on its OOP features.
Volume 2 provides an extended case study with a step-by-step
illustration of the OOA, OOD and OOP concepts outlined in
Volume 1. A mixture of classification and composition
approaches is illustrated. The OOA and OOD material is
strongly influenced by the Fusion Method, a fusion of OMT,
Booch, Coad-Yourdon, et al. HOT_Ada is designed for
individual, self-paced learning. One version runs on
Macintoshes. Another version runs on PC's with Windows.
There are many hypertext and hypergraphic features. For
example, you can click on a "hot word" to see its
definition in the Glossary, or click on a "hot icon" in a
diagram to jump to the corresponding line of Ada source code
in a previously hidden listing. A major theme of the
course is the reuse of patterns and parts.
Who can benefit from HOT_Ada?
Several categories of people can benefit from self-study using
HOT_Ada. If you are familiar with Ada 83, and have begun to
study Ada 9X, you can supplement other efforts by reviewing
this picture-based material and the case study. If, as an
Ada software engineer, you want to learn more about object
technology in general, especially the Fusion approach,
HOT_Ada provides an ideal combination for learning and
"tying it all together." If you are a newcomer to Ada,
the visual approach of HOT_Ada may provide you with an
excellent way to start your learning process -- to be
followed up using traditional text and classroom methods.
What are the System Requirements?
- PC:
Any PC with Windows Version 3.0 or later should be fine. You
will need about six MB of free space on your hard disk.(Two
MB for the ToolBook runtime and three MB for the two volumes
of HOT_Ada.) The beta version had been distributed on 4 disks.
Version 1.1 (and now Version 1.2) has been compressed, and is being delivered
on a single disk. You will need to "unzip" it.
- Mac:
Any reasonably modern Mac (e.g., Mac II or PowerBook) with two
MB of RAM or more should work OK, but older "small screen"
Macs will be awkward, due to a lot of graphical scrolling that
will be needed. Version 1.1 (and now Version 1.2) is being delivered on two
disks, without compression. (Each disk contains the HyperCard runtime
integrated with a volume of HOT_Ada.) You will need about three MB of free
space on your hard disk.
How to Order by Mail?
Write a personal check for $49 to Stage Harbor Software
and mail it to Stage Harbor Software, 9 Patriots Drive,
Lexington, MA 02173. Be sure to specify the Windows or Mac
version of HOT_Ada, and include your e-mail address if you
have one. (Credit card orders are not accepted.)
To Order from Outside the USA
To order from outside the USA, you can send an International Postal Money
Order or have your bank wire funds to my account at
The Cooperative Bank,
12 Nagog Park, Acton, MA, 01720-9890, USA,
Account: Bard S. Crawford, Stage Harbor Software,
Account Number 03520457558
-- and let Bard Crawford know separately that you are doing so.
[Source: Bard Crawford, Stage Harbor Software]
Here are some other Ada-related educational materials that you
may find helpful:
- Introducing Ada95
is a set of slides about Ada 95 by
Richard Conn,
released without restrictions on its use and distribution.
Here's a quote from Richard Conn:
This is a day-long short course that introduces Ada95. The purpose of
the course is to explore the Ada95 language, including its facilities
for object-oriented design and programming, real-time programming,
distributed processing, and other domains. The course will concentrate
on the practical aspects of applying the features of Ada95 to the
software development process. Numerous examples of the language are
presented.
Richard Conn's tutorial is available in
Zipped Powerpoint
Postscript format. (736K).
A
README file accompanies the tutorial.
Free viewers for both
Macintosh (602K)
and PCs
running Windows (1,092K) are available for those who do not own Powerpoint.
- Ada 95: The Next Generation, a slide set by
Mike Kamrad, is available through
the SIGAda server.
It is available in both Powerpoint
4.0 for the Macintosh format (140K) and Powerpoint
4.0 for Windows format (84K). Free viewers for both Macintosh
(602K) and PCs
running Windows (1,092K) are available for those who do not own Powerpoint.
- ASSET maintains a collection of Ada-related courseware;
see ASSET's WWW page for more information.
- Other
PAL Courseware
(mirror)
products are available by FTP
(in addition to AdaTutr and Lovelace, listed above).
Walnut Creek
mirrors the PAL onto its
Ada CD-ROM.
A copy of the
Ada CD-ROM is available on-line.
- An "Academic Ada" package developed by Intermetrics and Aonix is
available for Windows 95/NT.
(Up to Table of Contents)
Magnus Kempe and Mike Feldman maintain annotated bibliographies.
They are selected lists of useful books, with capsule reviews.
There are currently eleven books reviewed within three categories; within each category,
books are listed alphabetically by author. Where Web pages or related documents exist for
these books, links are included in the online version of this document.
The three categories are:
While bookstores do not always stock Ada-related books, it is usually possible
to order the books reviewed with the title/author/publisher/year/ISBN information
listed below.
Also, the Ada Home provides an online bookshop
service at http://www.adahome.com/shop/
Several additional texts are currently in the publication pipeline; reviews will
be written and added as soon as the books appear (preliminary placeholders may
already appear below).
The editor, Magnus Kempe,
is the point of contact for adding reviews. There are many reviewers; you too can
be one! Just write to kempe@adahome.com
with a capsule review in the form of the ones below, and we will be
glad to add it to the list and credit you for the contribution.
Reviewers in this edition are
Ted Baker, Jack Beidler, Michael Feldman, Magnus Kempe, Stan Kwasny, and Pat Rogers.
Their initials appear after their respective reviews.
This bibliography was originally a project of the ACM SIGAda Education Working Group.
Mike Feldman,
the chair of this WG, started the project and served as the editor until July 1996.
Ada: A Developmental Approach
Fintan Culwin
Prentice Hall Europe, 1997 (ISBN 0-13-264680-3)
As its title suggests, this is essentially an introduction to software
development, using Ada. This interesting book, intended for novice programmers,
has a major virtue:
it stresses the importance of design and does not pretend that software engineering
issues can be ignored while one is learning to create programs.
The book covers most major issues of software development:
modularity, component-based programming, levels of abstractions, ADTs,
design tools (Booch and JSP), user interface aspects, white/black box testing,
debugging, documentation, object-oriented programming,
programming by contract and formal specifications, and metrics.
Simultaneously, the reader is introduced to the mechanisms of Ada 95,
thus learning in context about
program structure, selection, iteration, recursion;
data types, structures, and files;
algorithms and complexity;
polymorphism, heterogeneous data structures, and generics.
Due to the number of topics found in the book, the software engineering issues are
not dealt with in details, but the novice programmer will be armed with a general
understanding of what skills he needs to master in order to become a professional
software developer.
There are five section, with a total of 34 chapters. A few exercises are
proposed at the end of the chapters; no solutions are provided in the book.
Unfortunately there are frequent typographical errors in the text, WWW resources
are often inaccurately cited, and formatting of the code examples is awkward
--which can make them difficult to read.
Concurrency is not covered.
The LAW project (Learning Ada on the Web) contains a collection of resources
directly supporting the book, including a draft of the complete text and an
additional section (omitted for reasons of space), all the source code, a
list of errata, and more.
(M.K.)
Prof. Culwin maintains
the LAW Project,
URL
http://www.scism.sbu.ac.uk/law/
Ada 95: The Craft of Object-Oriented Programming
John English
Prentice Hall Europe, 1996 (ISBN 0-13-230350-7)
This book introduces Ada-as-a-first-language, using an example-driven
approach that gradually develops small programs into large case studies.
Even for one who already knows Ada, it is a pleasure to read, especially as it
emphasizes an object-oriented perspective on the development of Ada applications.
The reader is quickly introduced to "high-level" mechanisms, such as exception handling
and the hierarchical library. Interestingly, the author systematically creates his
examples in a namespace hierarchy rooted at a package aptly named "JE".
The book is very well-written and appropriately stresses many software engineering
concerns throughout the 20 chapters; for instance, maintenance scenarios are used to
underscore the essential design choices faced at various stages of development.
Four annexes summarize the syntax of the language and essential predefined entities.
Tasking is described, but not in detail.
(M.K.)
Ada 95: Problem Solving and Program Design
Michael Feldman and Elliot Koffman
Addison-Wesley, 1996 (ISBN 0-201-87009-6)
As with the earlier edition by the same authors, the first 2/3
of the book is suitable as a CS1 text with Ada as the language
of instruction, and the the last few chapters, combined with
some language-independent algorithm theory, cover the rest of
the Ada langauge in sufficient depth to serve as the
language-specific basis of a CS2 course.
The style is like that of a musical fugue: sections that develop
general programming and problem solving techniques are
interleaved with sections that develop successively larger
subsets of the Ada 95 language and libraries; examples recur
from one chapter to another, in progressively more completely
developed forms. Packages are introduced from the start; other
language features are introduced very gradually at first and
then at a progressively faster pace. Loops come up in chapter 5,
records and arrays by chapter 8, generics by chapter 11, and
pointers, tagged types, and tasks in chapters 14-16. The nearly
200 examples have all been compiled and tested, and are
available in electronic format from the first author, the
Addison Wesley home page, and the usual Ada archives.
(T.B.)
The book is available packaged with a CD-ROM (ISBN 0-201-30485-6) which contains a special
edition of the Aonix ObjectAda compiler for Windows NT/95 (useable for student projects;
limited to 2000 lines per source file, 20 tasks per program, and 35 program units per program).
Prof. Feldman has made available online the full
Instructor's Manual for this book,
URL
http://www.seas.gwu.edu/faculty/mfeldman/cs1-im/
Ada from the Beginning, 3rd ed.
Jan Skansholm
Addison-Wesley, 1997 (ISBN 0-201-40376-5)
This book was one of the first to use Ada with CS1-style
pedagogy. There are excellent sections on the idiosyncracies of
interactive I/O (a problem in all languages), and a sufficient
number of fully-worked examples to satisfy students. Generics,
linked lists and recursion are covered at the end; there is no
tasking coverage, but one would not expect this at CS1-level. A
very interesting addition is the new Chapter 14, in which OOP in
both Ada 83 and Ada 95 is discussed. This is an especially lucid
explanation of OOP in Ada, and makes a real contribution because
it doesn't just discuss tagged types as a "feature" of Ada 95,
but shows very nicely what is possible in Ada 83 (instead of
just what is not possible), and shows how Ada 95 adds
functionality.
(M.F.)
The 2nd edition was published before the Ada 95 standard was finalized,
but this 3rd edition fully takes into account the Ada 95 standard.
Data Structures and Algorithms: An Object-Oriented Approach Using Ada 95
John Beidler
Springer-Verlag, 1997 (ISBN 0-387-94834-1)
(CS2/data structures)
This book introduces classical data structures and algorithms, with a
strong emphasis on object-orientation.
Abstraction, encapsulation, representation, iterators, and basic measurements
form the cornerstone of the presentation.
Structures cover: stacks, queues, lists, trees, graphs, sets and strings;
algorithms cover: sorting and searching.
The writing style is informal, almost like a narrative.
The book assumes a basic knowledge of Ada.
The 12 chapters each end with suggestions for exercises and further explorations.
Contains a bibliography and an index.
The software components are available over the Internet.
Prof. Beidler has made available online
the software components
described in his book,
URL
http://academic.uofs.edu/faculty/beidler/
Concurrency In Ada
Alan Burns and Andy Wellings
Cambridge University Press, 1995 (ISBN 0-521-41471-7)
(Concurrent Programming and Real-Time Systems)
The ultimate Ada concurrency book (Burns' "Concurrent
Programming In Ada") has a successor for Ada95. Written by
acknowledged real-time experts, it covers the tasking model in
great depth, including all the existing and new capabilities as
well as the Systems Programming Annex, the Real-Time Systems
Annex, and the Distributed Systems Annex. Also included are an
introduction to concurrent programming and an examination of the
interaction of the tasking facilities with those for
object-oriented programming. More than just a detailed language
examination, the book offers many examples of usage and analysis
of feature interaction that only these two authors could
provide. Highly recommended for introductory and advanced
courses in concurrent and real-time programming with Ada.
(P.R.)
Software Construction and Data Structures with Ada 95
Michael B. Feldman
Addison Wesley, 1996 (ISBN 0-201-88795-9)
(CS2/data structures)
As a book about data structures, this well-written, teachable
book assumes a base knowledge of Ada, although a quick review of
the basics is included.
Ada 95 features are incorporated smoothly into the discussion and
the coded examples (which are available from the author). The
book strikes a nice balance between theoretical issues and
practice with a wealth of examples and much attention to detail,
including a nice discussion on how to time a program. The
extensive material coverage includes standard CS2 topics like
"big O" analysis, linked lists, queues and stacks, graphs,
trees, hash methods, and sorting, but the reader is allowed to
investigate topics beyond the basics through additional topics
like strings, vectors, tables, file I/O, sets, priority queues,
AVL trees, and B-Trees, and several complete and illustrative
examples, including an employee database, an airline passenger
list, an RPN calculator, a discrete simulation, and even a
simple window manager.
By introducing generic units relatively early (chapter 5), the
text can focus on reusability and sound software engineering
solutions to a wide variety of data structures problems, but
never neglects the underlying analysis. As a capstone to the
development of several generic data structures, chapter 14
covers generic sorting according to a wide variety of methods
each with its own data structure nuances. The final chapter
introduces concurrency.
The nearly 200 programs and packages have all been compiled and
tested, and are available in electronic form from the author,
the Addison Wesley home page, and the usual Ada archives.
(S.K.)
Prof. Feldman has made available online
chapter 15,
Introduction to Concurrent Programming,
URL
http://www.seas.gwu.edu/faculty/mfeldman/cs2-book/chap15.html
Méthodes de génie logiciel avec Ada 95 (In French)
(Software Engineering Methods with Ada 95)
Jean-Pierre Rosen
Paris, InterEditions, 1995 (ISBN 2-7296-0569-X)
(Software Engineering)
This is a very interesting book written by a long-standing expert
in Ada and software engineering. Various methodologies are compared
(Booch, HOOD, Schlaer-Mellor, etc.), all in the context of Ada 95 but
not limited to language-specific discussions. Enough Ada 95 fundamentals
are taught that it should not be necessary to know Ada 95 before reading the
book, but this is not a book for people without some programming
background.
Recommended for classes taught in French and for individuals
with a good reading knowledge of French. The author is developing
an English translation, which I await enthusiastically.
(M.F.)
Object-Oriented Software in Ada 95
Michael A. Smith
International Thomson Computer Press, 1996 (ISBN 1-85032-185-X)
(Object-Oriented Programming for Advanced Undergraduates)
This book begins by providing an introduction to problem solving
using a Fusion-based object-oriented design methodology, in
addition to examining the basic constructs in the Ada 95
language. The book then moves on to discuss the object-oriented
features of the language, using numerous examples to illustrate
the ideas of encapsulation, inheritance, and polymorphism. The
book's capstone is a detailed case study of the design and
implementation of a textual user interface (TUI) using
object-oriented design methodology. This is a nice,
understandable, straightforward book on OOP with Ada 95, quite
suitable for self-study or an advanced undergraduate course. The
brief survey of Ada 95 at the beginning should be sufficient for
readers with programming experience. The several dozen source
code files are available on the Internet.
(M.F.)
Programming In Ada 95, first edition
John Barnes
Addison-Wesley, 1995 (ISBN 0-201-87700-7)
This new book by John Barnes continues a tradition of easy
readability that belies the depth of understanding required to
make a complex subject accessible. Though a new book for a new
Ada, the style and humor from the earlier book remain. The new
Ada standard is covered as a language in its own right, with few
references to its predecessor beyond a summary of language
differences in each chapter. The core facilities are covered
extensively, with emphasis on rationale and the "programming in
the large" issues of abstraction, OOP, tasking and exceptions.
Of particular value is the chapter entitled Object Oriented
Techniques, which explores the application of the OOP, tasking
and generic unit facilities explained earlier in the book. Each
chapter contains coding exercises for further study, with fullly
worked-out answers in the back. The many who appreciated the
earlier book will likewise enjoy this, the new classic on Ada95.
Highly recommended for readers with programming experience.
(P.R.)
Ada as a Second Language (2nd Edition)
Norman Cohen
McGraw Hill, 1996 (ISBN 0-07-011607-5)
This is more like a new book than like a new edition. The first
edition of this book was a excellent reference to Ada(83), well
organized and filled with excellent examples of realistic code
sequences. It was the perfect reference to the language for
those with substantial programming experience in another
programming language. One of the more important features of the
first edition is a well constructed index, which becomes the
major passageway into the book as it grows old and worn.
That was the first edition, the second edition builds upon the
excellent organization that made the first edition an excellent
reference and adds material on the new features in Ada(95). To
be more precise, the new material is not added, it is integrated
into a seamless reference to Ada(95). The book is composed into
twenty well focused chapters and five appendices, including an
appendix on the special needs annexes. Each chapter concludes
with two sections, one on differences between Ada(83) and
Ada(95), and a very brief chapter summary. Isolating the
discussion of '83 versus '95 differences to a single section in
each chapter has kept the rest of the presentation in each
chapter clean and to the point.
As an example of the quality in this book, consider Chapter
Twelve, Classwide Programming. This is the chapter that
describes Ada's object oriented programming support. Again the
word "seamless" comes to mind. Unless you know ahead of time
what are the new features in the language and what are the old
features, you could not tell from the presentation.
Polymorphism, type extension, dispatching are presented in a
clear direct way, with excellent sample pieces of code. I was
particularly impressed by the clean presentation of
Ada.Finalization, and the realistic easy to follow sample code
for the Initialize, Finalize, and Adjust procedures.
In conclusion, "Ada as a Second Language, is the best
non-language lawyer reference to Ada(95), even for those whose
first language is Ada(83).
(J.B.)
Rendezvous with Ada 95
David J. Naiditch
John Wiley and Sons, 1995 (ISBN 0-471-01276-9)
This book is a revision of Naiditch's earlier "quick
introduction" to Ada for experienced programmers. The second
edition is no longer "quick" (it is nearly 150 pages longer) but
is the best integrated introduction to Ada 95 to appear thus
far. One wishes only that the author had provided more complete,
compilable examples instead of the fragments so typical of Ada
texts.
(M.F.)
Ada 95 for C and C++ programmers
Simon Johnston
Addison Wesley, 1997 (ISBN not yet available)
This book will help C and C++ programmers to understand Ada 95 and
see where it will benefit them as software engineers. The correspondences
between C/C++ idioms and Ada 95 ones are described, and many advantages of
Ada 95 are underscored. Both the core language and the annexes are
presented.
Ada 95: The Lovelace Tutorial
David A. Wheeler
Springer-Verlag, 1997 (ISBN 0-387-94801-5)
This book, based on a very successful world-wide web tutorial,
introduces the basic elements of Ada 95 to those who already know another programming
language (e.g. Pascal, C, C++, Fortran, or Basic).
It is divided into a large number of small sections (most of which end in a question)
to improve understanding.
The online version
of the Lovelace tutorial is at the Ada Home,
URL
http://www.adahome.com/Tutorials/Lovelace/lovelace.htm
Ada 83 Books: An Annotated Sampling of Ada-Oriented Textbooks
August 1995
Michael B. Feldman
Education Working Group Chair, ACM Special Interest Group on Ada (SIGAda)
Department of Electrical Engineering and Computer Science
The George Washington University
Washington, DC 20052
(202) 994-5919 (voice)
(202) 994-0227 (fax)
mfeldman@seas.gwu.edu
http://www.seas.gwu.edu/faculty/mfeldman/
(with contributions from Jack Beidler, Duane Jarc, Suzanne Pawlan
Levy, Mathew Lodge, Pat Rogers, and David Weller, as indicated
by their initials following their reviews)
As chair of the SIGAda Education Working Group, and a denizen of the
Internet newsgroups, I am often asked to give references for "Ada
textbooks." This list responds to these many queries for Ada 83.
The textbooks in the Group 1 are written especially for students without
programming experience, who are learning Ada as their first language.
Most of these can also cover at least part of a typical CS2-level
course. The books in Group 2 use Ada as their language of
discourse but are "subject-oriented:" data structures, file structures,
compilers, comparative languages. The remaining books in Group 3 are
either "Ada books" focusing on the language features or more general
books that use Ada, at least in part, but do not fit obviously into a
standard curriculum "pigeonhole."
I invite you to add to the list. Please write your annotated entry in
the form I have used here and write or e-mail it to me,
mfeldman@seas.gwu.edu . I will include
it in my next version and credit you as a co-compiler of the list.
Disclaimers: I wrote two of the texts listed here; I hope the
annotations are impartial enough. And any annotated bibliography is
selective and opinionated. Your mileage may vary.
-
Bover, D.C.C., K.J. Maciunas, and M.J. Oudshoorn.
Ada: A First Course in Programming and Software Engineering.
Addison-Wesley, 1992. ISBN 0-201-50992-X
-
This work is, to our knowledge, the first Ada book to emerge from
Australia, from a group of authors with much collective experience in
teaching Ada to first-year students. A number of interesting examples
are presented, for example, an Othello game. The book is full of gentle
humor, a definite advantage in a world of dry and serious texts. In the
book's favor is the large number of complete programs. On the other
hand, it is rather "European" in its terseness; American teachers may
miss the pedagogical apparatus and "hand-holding" typically found in
today's CS1 books. Generic units are hardly mentioned.
-
Culwin, F.
Ada: a Developmental Approach.
Prentice-Hall, 1992.
-
This work introduces Ada along with a good first-year approach to
software development methodology. Much attention is paid to program
design, documentation, and testing. Enough material is present in data
structures and algorithm analysis is present to carry a CS2 course. A
drawback of the book is that the first third is quite "Pascal-like" in
its presentation order: procedures, including nested ones, are presented
rather early, and packages are deferred until nearly the middle of the
book. This is certainly not a fatal flaw, but it will frustrate teachers
wishing a more package-oriented presentation. The programs and solutions
are apparently available from the author.
-
Dale, N., D. Weems, and J. McCormick.
Programming and Problem Solving with Ada.
D. C. Heath, 1994.
ISBN 0-669-29360-1
-
This book is inspired by Dale and Weems' very successful Introduction to
Pascal and Structured Design, but it is not simply an Ada version. Ada's
more advanced capabilities such as exceptions, packages and generic units
are included in this text. In addition, more than half of the material is
completely new, and the order of the topics is signficantly different. It
also has more of a software engineering focus than the Pascal version. The
only Ada topics not included in this text are tasks and access types.
Procedures and packages are introduced early. Each chapter includes case
studies, testing and debugging hints and excellent non-programming exercises
and programming problems. The text comes with a program disk containing all
the programs given in the book. In addition, a validated Meridian Ada
compiler with complete documentation is available at low cost to students
using this book. (S. P. L.)
-
DeLillo, N. J.
A First Course in Computer Science with Ada.
Irwin, 1993. (ISBN 0-256-12538-4)
-
This book is a first in the Ada literature: a version comes with an
Ada compiler, the AETech-IntegrAda version of Janus Ada. Author, publisher,
and software supplier are to be commended for their courage in this.
The book itself covers all the usual CS1 topics. In my opinion, the order
of presentation is a bit too Pascal-like, with functions and procedures
introduced in Chapter 5 (of 15) and no sign of packages (other than Text_IO)
until Chapter 10. Unconstrained arrays and generics are, however, done
nicely for this level, and Chapter 13 is entirely devoted to a single
nontrivial case study, a statistical package. I wish there were more
complete programs in the early chapters, to put the (otherwise good)
discussion of control and data structures in better context.
-
Feldman, M.B., and E.B. Koffman.
Ada: Problem Solving and Program Design.
Addison-Wesley, 1992. ISBN 0-201-53364-2
-
This work combines the successful material from Koffman's CS1 pedagogy
with a software-engineering-oriented Ada presentation order. Packages
are introduced early and emphasized heavily; chapters on abstract data
types, unconstrained arrays, generics, recursion, and dynamic data
structures appear later. The last five chapters, combined with some
language-independent algorithm theory, can serve as the basis of a CS2
course. A diskette with all the fully-worked packages and examples
(about 180) is included; the instructor's manual contains a diskette
with project solutions. A second edition, with Ada 95 as the language,
is in preparation and due out at the beginning of 1996.
-
Savitch, W.J. and C.G. Petersen.
Ada: an Introduction to the Art and Science of Programming.
Benjamin/Cummings, 1992. ISBN 0-8053-7070-6
-
This is a straightforward adaptation of the well-known Savitch Pascal
books. Ada is introduced in a Pascal-like order, with subtypes and
packages introduced halfway through the book. This is purely a CS1 book.
The final chapter covers dynamic data structures. There is minimal coverage
of unconstrained array types; generics are introduced at the halfway
point to explain Text_IO, then continued only in the final chapter. The
authors intended this book to provide a painless transition to Ada for
teachers of Pascal; one wishes they had taken advantage of the chance to
show some of the interesting Ada concepts as well. Program examples from
the text are available on disk, but only as part of the instructor's
manual; a solutions disk is available for a fee from the authors.
-
Skansholm, J.
Ada from the Beginning. (2nd ed.)
Addison Wesley, 1994. ISBN 0-201-62448-6
-
This book was one of the first to use Ada with CS1-style pedagogy.
There are excellent sections on the idiosyncracies of interactive I/O (a
problem in all languages), and a sufficient number of fully-worked
examples to satisfy students. Generics, linked lists and recursion are
covered at the end; there is no tasking coverage, but one would not
expect this at CS1-level. A very interesting addition is the new
Chapter 14, in which OOP in both Ada 83 and Ada 95 is discussed.
This is an especially lucid explanation of OOP in Ada, and makes a real
contribution because it doesn't just discuss tagged types as a "feature"
of Ada 95, but shows very nicely what is possible in Ada 83 (instead
of just what is _not_ possible), and shows how Ada 95 adds functionality.
-
Smith, J. F., and T. S. Frank
Introduction to Programming Concepts and Methods with Ada
McGraw-Hill, Inc., 1994 ISBN 0-07-911725-2
-
This is a well written and easy to use text. The book takes a spiraled
approach to CS 1. The authors do an excellent job integrating Ada into
the book. They take a very direct approach, especially with an early
introduction to the package concept and the traditional Text_IO package.
Faculty who have taught CS 1 with Pascal should like this book. Instead
of making a big fanfare about Ada features, they simply introduce them
as good support for software development concepts. The authors have
carefully chosen the Ada topics they decided to cover in this book in
order to strike a balance between staying true to the CS 1 course while
presenting enough of the programming language. If you teach CS 1 you
might at least want to get a copy of this text just to look at two
chapters, Chapter 7 and Chapter 14. Seven covers program correctness and
run-time event (exception handling) and fourteen is a beautiful presentation
and example of generic packaging. Both presentations are done in an
appropriate manner for CS 1. (J. B.)
-
Volper, D., and M. Katz.
Introduction to Programming Using Ada.
Prentice-Hall, 1990. ISBN 0-13-493529-2
-
This book uses a heavily "spiraled" approach to Ada, and is designed
for a 2-semester course, covering nearly all of Ada eventually. There
are lots of fully-coded examples, and good pedagogical sections on
testing, coding style, etc. If you like spiraling, you'll like this. The
down side is that you can't find all you need on a given subject in one
place. It's at the other end of the scale from the "Ada books" that
follow the Ada Language Reference Manual (LRM) order.
-
Ben-Ari, M.
Principles of Concurrent and Distributed Programming.
Prentice-Hall 1990. ISBN 0-13-711821-X
(OS/concurrency)
-
In my opinion, this is the best introduction to concurrency on the
market. Ada notation is used for everything, but the focus is on
concurrency and not on Ada constructs per se. I liked the CoPascal
notation of the first edition better, but this book is still great. A
software disk is promised in the preface; I had to work quite hard to
get it from the publisher, which finally had to express-ship it from
England. The software comes with a tiny Ada-ish interpreter, complete
with Pascal source code, adapted from Wirth's Pascal/S via CoPascal.
There are also some real Ada programs, most of which I've tested and
found correct and portable.
-
Feldman, M.B.
Data Structures with Ada.
Addison Wesley, 1993. ISBN 0-201-52673-5
(CS2/data structures)
-
This book is a reasonable approximation to a modern CS2 book: "big O"
analysis, linked lists, queues and stacks, graphs, trees, hash methods,
and sorting, are all covered. The Ada is a bit old-fashioned, especially
the lack of generics; the book was published before compilers could
handle generics. The packages and other programs are available free from
the author. The book has been heavily revised; the Ada 95-based second edition
should appear early in 1996 from Addison-Wesley.
-
Fischer, C., and R. LeBlanc.
Crafting a Compiler.
Benjamin Cummings, 1988. ISBN 0-8053-3201-4
(compilers)
-
This book uses Ada as its language of discourse and Ada/CS, a usefully
large Ada subset, as the language being compiled. If you can get the
"plain Pascal" tool software by ftp from the authors, you'll have a good
translator-writing toolset. Skip the Turbo Pascal diskette version,
which is missing too many pieces to be useful. I've used the book since
it came out with both undergrad and graduate compiler courses; it
embodies a good blend of theory and "how it's really done" coding.
Students like it. The authors have recently published a second version,
which uses C as its coding language but retains Ada/CS as the language
being compiled.
-
Hillam, B.
Introduction to Abstract Data Types Using Ada.
Prentice-Hall, 1994. ISBN 0-13-045949-6
(data structures)
-
This is a very readable treatment of data structures presented using Ada
that makes good use of Ada features such as generics. It contain many
complete programs and packages. Unfortunately, obvious syntax errors make
it apparent that not all examples have been compiled. The level of
presentation is somewhere between an elementary, CS 2, data structures
course and an advanced, CS 7, course. A subset of first eleven chapters
provide the appropriate topics for a CS 2 course, but not the pedagogy
necessary for a course at that level. (D. J.)
-
Lomuto, N.
Problem-Solving Methods with Examples in Ada.
Prentice-Hall, 1987.
(algorithms)
-
Inspired by Polya's classic How to Solve It, this book can make a nice
addition to an Ada-oriented algorithms course. It makes too many
assumptions about students' programming background to use as a CS1 book,
and doesn't teach enough Ada to be an "Ada book." But it makes nice
reading for students sophisticated enough to handle it. I'd classify it
as similar to Bentley's Programming Pearls.
-
Miller, N.E. and C.G. Petersen.
File Structures with Ada.
Benjamin/Cummings, 1990. ISBN 0-8053-0440-1
(file structures)
-
Designed for a straightforward ACM-curriculum file structures course,
this book succeeds at what it does. There are good discussions of ISAM
and B-tree organizations. The software can be purchased a low cost from
the authors; it seems to approximate in Ada all those C-based file
packages advertised in programmer-oriented trade publications.
-
Schneider, G.M., and S.C. Bruell.
Concepts in Data Structures and Software Development
(with Ada Supplement by P. Texel).
West, 1991.
(CS2/data structures)
-
This work is not, strictly speaking, an Ada book; rather, it is a
solid, language-independent approach to modern CS2. The language of
discourse in the book is a Pascal-like ADT language rather like Modula-2
in style; some examples are coded in legal Pascal. The Ada supplement
makes it usable in an Ada-based course, but the supplement is rather too
terse (100 pages of large type) for my taste, and insufficiently well
keyed to the book chapters. The supplement's effectiveness would be
greatly enhanced by full translations to Ada of a large number of the
book's examples.
-
Sebesta, R.W.
Concepts of Programming Languages (2nd ed.).
Benjamin Cummings, 1993. ISBN 0-8053-7132-X
(comparative languages)
-
If you've been around for a while, you might remember the late Mark
Elson's 1975 book by the same title. This is similar: a concept-by-
concept presentation, with -- in each chapter -- examples taken from
several languages. I include this work in an "Ada list" because I like its
nice, impartial coverage of Ada. I especially like the chapters on
abstraction and exception handling. The book covers -- comparatively,
of course -- most of the lanuages you'd like to see, including C, C++,
Lisp, Smalltalk, etc., with nice historical chapters as well. The book
is readable; my students like it. Our undergraduate and graduate courses
both use it as a base text.
-
Stubbs, D.F., and N.W. Webre.
Data Structures with Abstract Data Types and Ada.
PWS-Kent, 1993. ISBN 0-534-14448-9
(advanced data structures)
-
This work updates and adapts to Ada the material in the authors'
successful data structures texts using Pascal and Modula-2. It is good for a
"heavy" CS2, i.e., one on the theoretical side, or a "light" CS7, i.e. it
is not as theory-oriented as the Weiss work below. More Ada, especially
regarding advanced types, is taught here than in Weiss. Especially
interesting about all the books from these authors is that they have
matched their "big O" performance prediction with tables and graphs
showing actual performance measurements.
-
Weiss, M.A.
Data Structures and Algorithms in Ada.
Benjamin/Cummings, 1993. ISBN 0-8053-9055-3
-
I think this book reaches its intended market -- data structures courses
(CS7) -- rather well with Ada. There's a good mixture of theory and practice
(ADT design, for example), and coverage of new topics like amortized algorithm
analysis and splay trees. A book at this level should not pay too much
attention to teaching a language; rather it should make good use of its
language of discourse. The Ada version does not attempt to teach either the
language or Ada-style software engineering, but shows good understanding of
the language, uses generic packages quite well and focuses on the theory of
algorithms, as a book at this level should. This is the first, and so far
the only, text in Ada for this course.
-
Barnes, J. G. P.
Programming in Ada. (4th edition)
Addison-Wesley, 1994. ISBN 0-201-62407-9
-
Barnes' work has been one of the most popular "Ada books." Some students
find it hard to see how the pieces fit together from Barnes' often
fragmentary examples; it is difficult to find complete, fully-worked out,
compilable programs. On the other hand, this book has been a real
best-seller, so Barnes clearly is doing something right. The fourth edition
has a 100-page summary of Ada 95, and a fully-integrated Ada 95 fifth edition
is in production for Fall 1995 release. Also, the third (Ada 83) edition is
still in print, with an Ada 83 reference manual included.
-
Booch, G.
Software Components with Ada.
Benjamin Cummings, 1987. ISBN 0-8053-0610-2
-
This work is an encyclopedic presentation of data structure packages
from Booch's OOD point of view. It is great for those who love
taxonomies. It's not for the faint-hearted, because the volume of
material can be overwhelming. It could serve as a text for an advanced
data structures course, but it's thin in "big O" analysis and other
algorithm-theory matters. The book is keyed to the (purchasable) Booch
Components.
-
Booch, G. and D. Bryan, with C. Petersen
Software Engineering with Ada. (3rd edition)
Benjamin/Cummings 1994. ISBN 0-8053-0613-7
-
Another of the classical "Ada books." Introduces Booch's OOD ideas. Not
for use to introduce Ada to novices, in my opinion; there are some nice
fully-worked case studies but they begin too far into the book, after long
sections on design, philosophy, and language elements. The earlier chapters
contain too much fragmentary code, a common flaw in books that follow the LRM
order. The third edition contains an appendix describing Ada 9X.
-
Bryan, D.L., and G.O. Mendal.
Exploring Ada, Volumes 1.and 2.
Prentice-Hall, 1990 and 1992 respectively. ISBN 0-13-295684 (vol. 1);
ISBN 0-13-297227-1 (vol. 2)
-
This is an excellent study of some of the interesting nooks and
crannies of Ada; it sometimes gets tricky and "language-lawyerly."
Volume 2 takes up tasking, generics, exceptions, derived types, scope
and visibility; Volume 1 covers everything else. The programs are short
and narrowly focused on specific language issues. If you like Bryan's
"Dear Ada" column in Ada Letters, you'll like this book. It is certainly
not a book for beginners, but great fun for those who know Ada already
and wish to explore.
-
Burns, A., and G. Davies.
Concurrent Programming.
Addison-Wesley, 1993, ISBN 0-201-54417-2
-
Solid book covering all aspects of writing concurrent software. Uses
a version of Pascal called FC-Pascal (available for free through the
Internet). The FC means "Functionally Concurrent". It has constructs
that are similar to Ada 9X, and this is by no accident -- the authors
frequently point out that the implementations in FC-Pascal are taken
from Ada 9X's Tasks and Protected Types. Covers lots of low-level problems
by gradually building up from simple examples. Highly recommended for a
Concurrent Programming class. Exercises and Further readings are provided
at the end of each chapter. (D.W.)
-
Burns, A. and A. Wellings.
Real Time Systems and their Programming Languages
Addison-Wesley 1990. (ISBN 0-201-17529-0)
-
This is an excellent and unique book. Basic concepts and terminology are
explained before moving on to explain the major aspects of real time design.
"Real world" examples are presented in Ada, Modula-2 and occam 2, though
Ada is clearly the authors' language of choice and gets the most coverage.
Topics covered include reliability and fault tolerance, concurrency,
synchronisation, scheduling, message passing, atomic transactions, resource
control, distributed systems and low-level device control. Efficiency is not
neglected, and Ada support here is particularly strong with detail on the
CIFO package. Several case studies are also presented. The only failing of
the book is that it needs updating to cover Ada 9x and its real-time annex,
Modula-3 etc. However, the basic concepts that the authors convey so clearly
are independent of implementation language. (M. L.)
-
Cohen, N.
Ada as a Second Language.
McGraw Hill, 1986. ISBN 0-07-011589-3
-
This book is a quite comprehensive exploration of Ada which
follows the LRM in its presentation order. My graduate students like it
because it is more detailed and complete than alternative texts. It's an
excellent book for students who know their languages and want to study
all of Ada. There are good discussions of "why's and wherefore's" and
many long, fully-worked examples. An anxiously-awaited 2nd edition
covering Ada 95 is in the pipeline.
-
Gauthier, M.
Ada: Un Apprentissage (in French).
Dunod, 1989.
Ada: a Professional Course (in English).
Macmillan Computer Science Series, 1993. ISBN 0-333-58001-X.
-
I found this an especially interesting, almost philosophical approach
to Ada. The first section presents Ada in the context of more general
laguage principles: types, genericity, reusability. The second section
introduces testing and documentation concerns, as well as tasking; the
third considers generics and variant records in the more general context
of polymorphism. For mature Ada students in the French-speaking world,
and others who can follow technical French, this book can serve as a
different slant on the conventional presentations of the language. The
more recent English edition is a contribution to the Ada literature in
English, because of its getting behind the language itself into
the more general language-design principles.
-
Gehani, N.
Ada: an Advanced Introduction (2nd edition).
Prentice-Hall, 1989. ISBN 0-13-004334-6
-
I've always liked Gehani's literate writing style; he knows his
languages and treats Ada in an interesting, mature, and balanced
fashion. This book comes with a diskette sealed in the back of the book,
which is advantageous because the book has numerous nontrivial, fully-
worked examples.
-
Gehani, N.
Ada: Concurrent Programming (2nd edition).
Silicon Press, 1991. ISBN 0-929306-08-2
-
This is a less formal, more Ada-oriented presentation of concurrency
than the Ben-Ari work. I use both books in my concurrency course; its
real strength is the large number of nontrivial, fully worked examples.
Gehani offers a nice critique of the tasking model from the point of
view of an OS person. The preface promises the availability of a
software disk from the publisher.
-
Nyberg, K. (editor)
The Annotated Ada Reference Manual. (3rd edition)
Grebyn Corporation, 1993.
-
This is the definitive work on Ada 83 legalities, because it presents not
only the full text of the LRM but also the official Ada Interpretations
as prepared by the Ada Rapporteur Group of Working Group 9 of the
International Organization for Standardization (ISO) and approved by
that organization. These commentaries, interleaved with the LRM text,
are promulgated by the Ada Joint Program Office, the American National
Standards Institute (ANSI) agent for Ada, in the Ada Compiler Validation
Suite (ACVC). They are thus binding upon compiler developers. I recommend
this book as an essential volume in the library of every serious Ada
enthusiast.
-
Watt, D.A., B.A. Wichmann, and W. Findlay.
Ada Language and Methodology.
Prentice-Hall, 1987. ISBN 0-13-004078-9
-
This work presents some interesting programming projects, and the
coverage of design and testing--at the level of a first-year student--is
quite good. The first third of the book concentrates heavily on
classical control and data structures, leaving subprograms until Chapter
12, and exceptions and packages until the "programming in the large" material
in the second third. CS2 teachers will find too little concentration on
algorithm analysis. On the other hand, tasking and machine-dependent
programming are covered. Like the Shumate work, this book would make a
suitable introduction to Ada for students with a semester or so of
programming experience; it "jumps in" too quickly to satisfy the needs
of neophytes and is not well-tailored to CS1 or CS2 needs.
The following persons have contributed to the information gathered
in this FAQ:
Michael Feldman--who created the original annotated lists of Ada books,
David A. Wheeler--who developed the original version of the tutorials list,
and
Gordon Dodrill.
The maintainer has simply :-) organized, polished, or added some information for your satisfaction.
(Up to Table of Contents)
This FAQ is Copyright © 1996-1997 by Magnus Kempe.
It may be freely redistributed --as posted by the copyright holder in
comp.lang.ada and comp.edu-- in other forums than Usenet News as long as
it is completely unmodified and that no attempt is made to restrict any
recipient from redistributing it on the same terms.
It may not be sold or incorporated into commercial documents or products
without the explicit written permission of the copyright holder.
Permission is granted for this document to be made available under the
same conditions for file transfer from sites offering unrestricted file
transfer on the Internet and from Forums on e.g. Compuserve and Bix.
This document is provided as is, without any warranty.
(Up to Table of Contents)
Magnus Kempe
-- M.Kempe@ieee.org