July 29, 1997
by Michael Feldman
[Addison-Wesley-Longman asked Michael Feldman to write a foreword for Simon Johnston's book. Here it is, as posted to the Team-Ada mailing list. (c) Addison Wesley Longman 1997.]
Ada 95 was adopted as a language standard by ISO and ANSI early in 1995. To the Ada 83 standard, which already embodied strong and stable support for encapsulation, generic templates, exception definition and handling, and active-object concurrent programming, Ada 95 adds full support for inheritance and dynamic polymorphism, hierarchically structured program libraries, and a rich collection of standard library packages.
Since early 1995, we have seen the appearance in print of a dozen or so well-written and effective Ada 95-related texts. As author of two of these, and as chair of the ACM SIGAda Education Working Group, and as an active teacher and user of Ada, I have followed the development and emergence of these books with great interest.
There is remarkably little duplication in this set of books. Each has its intended target audience; each author lends a different perspective and viewpoint to the discussion. Simon Johnston's work makes an important contribution to this text collection. Its target audience is the large number of programmers with experience in the C and C++ languages. Johnston's perspective is that of an active software developer fluent in all these languages; his goal is to show readers how Ada 95 helps them to do what they already know how to do in C and C++.
Johnston has shown considerable bravery by putting early versions of this text on the World Wide Web. He has revealed his ideas to the eyes of many thousands of critical readers, and this courageous approach has benefited both readers and author. The result is a very polished piece of work.
Three features of Johnston's book are especially useful. First, his prose and code are cogent and clear. Second, throughout the book the author develops and follows through one major case study, introducing Ada 95 capabilities through refinement of the design and alternative strategies. Finally, Johnston introduces and carefully explains the richness of the standard libraries, presenting these in a systematic fashion without merely paraphrasing the Reference Manual.
During the first few years of Ada 83, C++ was scarcely known. Indeed, Stroustrup's landmark text on C++ appeared only late in 1985. Since then, C++ has attracted huge numbers of programmers across the industry. Ada has been widely used in the safety-critical sector, especially in real-time systems like air traffic control, satellite communication, avionics, and high speed ground transportation, but has been relatively little known outside this sector.
One can speculate at length on the reasons why C++ became so rapidly and widely popular while Ada did not. This is unproductive debate; the facts "on the ground" are that the Ada 95 standard is causing many C and C++ programmers to want to take a second look (or perhaps even a first look) at Ada.
A number of Ada 95 software development systems - GNU Ada 95 (GNAT), ObjectAda, AppletMagic, and others - have entered the market with strong capabilities, remarkable stability, and very moderate price tags. Nearly every popular computing "platform" is supported by one or more of these systems, and it is even possible to produce Java applets directly from Ada 95 source. The emergence of this software makes Ada 95 accessible to all.
For the C or C++ programmer, Johnston's text, aided by one of these nice development systems, will go far in making the Ada 95 experience a pleasant and rewarding one.
Michael B. Feldman
The George Washington University
|This book and other introductory Ada books can be ordered on-line from the Ada Home Bookshop, in the Introduction to Ada section.|
Page last modified: 1997-07-29