From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: ** X-Spam-Status: No, score=2.7 required=5.0 tests=BAYES_00,FROM_WORDY, HEADER_SPAM,REPLYTO_WITHOUT_TO_CC,T_FILL_THIS_FORM_SHORT autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,85211e99869e7914,start X-Google-Attributes: gid103376,public X-Google-Thread: f7ded,85211e99869e7914,start X-Google-Attributes: gidf7ded,public X-Google-Thread: 100062,85211e99869e7914,start X-Google-Attributes: gid100062,public X-Google-ArrivalTime: 1995-03-21 10:11:49 PST Path: nntp.gmd.de!stern.fokus.gmd.de!ceres.fokus.gmd.de!zib-berlin.de!news.mathworks.com!zombie.ncsc.mil!paladin.american.edu!gatech!howland.reston.ans.net!math.ohio-state.edu!jussieu.fr!univ-lyon1.fr!swidir.switch.ch!epflnews!dinews.epfl.ch!usenet From: Magnus.Kempe@di.epfl.ch (Magnus Kempe) Newsgroups: comp.lang.ada,comp.answers,news.answers Subject: Ada FAQ: comp.lang.ada (part 2 of 3) Followup-To: poster Date: 21 Mar 1995 18:11:49 GMT Organization: None Distribution: world Message-ID: <3kn4t5$bd7@disunms.epfl.ch> Reply-To: Magnus.Kempe@di.epfl.ch (Magnus Kempe) NNTP-Posting-Host: lglsun4.epfl.ch Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Summary: comp.lang.ada Frequently Asked Questions (and answers), part 2 of 3. Please read before posting. Does *not* get into Ada programming questions [for that see the companion Ada/programming FAQ]. Keywords: Ada, comp.lang.ada Xref: nntp.gmd.de comp.lang.ada:19963 comp.answers:10873 news.answers:40023 Date: 1995-03-21T18:11:49+00:00 List-Id: Archive-name: computer-lang/Ada/comp-lang-ada/part2 Comp-lang-ada-archive-name: comp-lang-ada/part2 Posting-Frequency: monthly Last-modified: 20 March 1995 Last-posted: 20 February 1995 comp.lang.ada Frequently Asked Questions (FAQ) This is part 2 of a 3-part posting. Part 3 begins with question 9; it should be the next posting in this thread. Part 1 should be the previous posting in this thread. 4.5: How can I contact Ada compiler vendors? Note: The AdaIC's Validated Compiler List (see 4.1) now contains--at the end of the list--addresses, including e-mail, for compiler-vendor points of contact. Here is a non-exhaustive list (possibly out-of-date, for the moment) of email and phone contacts for questions and/or sales. Alsys: see Thomson Software Products Convex questions allison@convex.com (Brian Allison) Tel: (214) 497-4346 Cray questions det@cray.com (Dave Thersleff) Tel: (612) 683-5701 sales svc@cray.com (Sylvia Crain) Tel: (505) 988-2468 DEC WWW http://www.digital.com/home.html DDC-I sales sale@ddci.dk Tel: (602) 275-7172 Tel: +45 45 87 11 44 Green Hills Software Inc. questions support@ghs.com sales eric@ghs.com (Eric Schacherer) Tel: (805) 965-6044 Harris questions jeffh@ssd.csd.harris.com (Jeff Hollensen) IBM/Ada questions malcho@torolab6.vnet.ibm.com (Don Malcho) Tel: (416) 448-3727 Intermetrics WWW http://www.inmet.com/ questions ryer@inmet.inmet.com (Mike Ryer) Irvine Compiler Corp (ICC) questions info@irvine.com OC Systems Inc. WWW http://ocsystems.com/ questions Email: info@ocsystems.com sales Tel: (703) 359-8160 Fax: (703) 359-8161 Rational Software Corporation sales product_info@rational.com Tel: (408) 496-3600 or (800) RAT-1212 R.R. Software rbrukardt@bix.com (Randy Brukardt) Tel: (800) Pc-Ada-4u (or: (800) 722-3248) Tartan questions customer-support@tartan.com Tel: (412) 856-3600 (ext 150) sales info@tartan.com Tel: (800) 856-5255 or (412) 856-3600 TeleSoft questions adasupport@alsys.com (Note that TeleSoft is now part of Thomson Software Products.) Tel: (619) 457-2700 sales marketng@alsys.com Tel: (619) 457-2700 Thomson Software Products (ex-Alsys) questions adasupport@alsys.com sales marketng@alsys.com Tel: (619) 270-0030 (voice) Pat Michalowski _________________________________________________________________ 5: Organizations that deal with Ada and Ada issues 5.1: Ada Joint Program Office (AJPO) The AJPO is part of the Department of Defense; it facilitates the implementation of the DoD's Software Initiative (Ada) throughout the Services, and maintains the integrity of the Ada language. (The AJPO sponsors the AdaIC.) The address is: Ada Joint Program Office Defense Information Systems Agency 701 South Courthouse Road Arlington, VA 22204-2199 703/604-4619 (autovon 664-4619) fax: 703/685-7019 The current Director and Deputy Directors are: Acting Director Donald Reifer Air Force Liaison Maj M. Dirk Rogers (rogersd@ajpo.sei.cmu.edu) Navy Deputy Liaison Joan McGarity (mcgarity@ajpo.sei.cmu.edu Army Deputy Liaison MAJ Charlotte Lee (leec@ajpo.sei.cmu.edu) DISA Liaison David Basel (baseld@ajpo.sei.cmu.edu) 5.2: Ada Information Clearinghouse (AdaIC) The Ada Information Clearinghouse (AdaIC) provides a full spectrum of information on Ada to anyone interested in finding out more about the programming language. IIT Research Institute operates the AdaIC for the Ada Joint Program Office (AJPO). The address is: Ada Information Clearinghouse P.O. Box 46593 Washington, DC 20050-6593 1-800-AdaIC-11 (232-4211), 703/685-1477; fax: 703/685-7019 The AdaIC publishes a quarterly newsletter, which contains current news, Ada conference reports, announcements from the AJPO Director, and articles on projects using Ada. If you would like to receive a copy of the AdaIC newsletter, please call and request a subscription. There's no charge. The AdaIC also regularly updates and publishes more than 70 separate information flyers. Flyer topics include: * Ada Validated Compilers * Ada News and Current Events * Ada Usage * Ada 9X Project * On-line sources of Ada Information * Ada Bibliographies * Ada Compiler Validation and Evaluation * Resources for Ada Education and Training * Ada Software, Tools, and Interfaces * Ada Regulations, Policies, and Mandates * Ada Historical Information One of the most commonly requested flyers is the Validated Compilers List. This list, which is updated monthly, contains Ada compilers that have been validated by the AJPO. For the most current information on validated Ada compilers, contact the AdaIC. Practically all AdaIC flyers are available via anonymous FTP from their host, in directory ftp://sw-eng.falls-church.va.us/public. 5.3: Association of Computing Machinery's Special Interest Group on Ada (ACM SIGAda) SIGAda's bimonthly publication is Ada Letters. Price for non-members: $55 (Annual ACM membership dues, $82; students, $25). Otherwise it costs $20 per year to ACM members; $10 per year to ACM student members. The address is: Association for Computing Machinery, Inc. 1515 Broadway New York, NY 10036 212/869-7440 SIGAda also has a number of committees and working groups on a variety of topics. 5.4: ISO Working Group 9 (ISO-IEC/JTC1/SC22/WG9, WG9 for short) This is a working group that deals with Ada within the International Standardization Organization. Within WG-9, are several Rapporteur (rap) groups: * ARG: Ada Rapporteur Group -- Comments and Interpretations * CRG: Character Rapporteur Group -- International Character Sets * IRG: Information Systems Rapporteur Group -- Decimal Arithmetic * NRG: Numerics Rapporteur Group -- NUMWG packages * RRG: Real-Time Rapporteur Group -- ExTRA * SRG: SQL Interfaces Rapporteur Group -- SAMeDL * URG: Uniformity Rapporteur Group -- Portability through Uniformity * XRG: Ada 9X Rapporteur Group Ada Rapporteur Group (ARG): This is the group responsible for evaluating comments on the Ada standard. Officially, the group is only developing a technical report addressing comments and questions concerning the ISO standard for Ada. (Arcane ISO rules prevent the ARG or WG9 from issuing "official" interpretations of a standard.) In practice, when a response to a comment is approved by WG9, the response is taken into account by the Ada Validation Office and affects the test suite. The documents containing comments on the standard and ARG responses are called "Ada Commentaries" and are given numbers of the form AI-ddddd/vv, where vv is a version number. Comments and questions about the Ada standard should be sent to ada-comment@ajpo.sei.cmu.edu, using the format specified in the Ada standard. You can receive e-mail notification of an update to a commentary (optionally including the text of the commentary) by sending a request to ada-comment@ajpo.sei.cmu.edu. Commentaries are generally updated only a few times each year. The text of all commentaries is available by anonymous FTP from the AJPO site in the account public/ada-comment. A detailed discussion of ARG procedures and the format of commentaries can be found in the ada-comment account in the file arg-procedures.doc. A reformatted copy of the Reference Manual that includes WG9-approved commentaries is available from Karl Nyberg (karl@grebyn.com). Uniformity Rapporteur Group (URG) Responsible for evaluating Uniformity Issues (UIs). UIs specify/recommend specific choices for the compiler implementor, where the language permits implementation freedom. The "canonical example" is UI-8, on integer types. This UI recommends that integers be at least 32 bits, and provides names for the other predefined integer types. The goal of the URG and the UI's is to further Ada portability by providing uniform implementations of implementation-dependent features commonly used by Ada applications. _________________________________________________________________ 6: Tools 6.1: Is there an Ada-mode for Emacs? There are, in fact, 4 Ada modes for Emacs! * the most recent one, available by FTP, is in the file emacs-ada-mode-2.12.tar.gz in directory ftp://cs.nyu.edu/pub/gnat This is still work under development but it is already quite usable. The main features are: + TAB ---> indent (almost always correctly) + compile and parse the errors (with the cursor at the right line AND column) + highlight keywords and comments + create skeletons for all Ada constructs (both 83 and 9x) + goto next (previous) subprogram/package/task + goto beginning of syntactic construct + name completion (when it is a subprogram defined in the file) + untabify, remove trailing spaces automatically before saving + C-c TAB ---> format subprogram specs in GNAT style + and much more to come... The 2 main developers are Markus Heritsch (who works under the direction of Franco Gasperoni at ENST, Paris) and Rolf Ebert (Munich, Germany). * a simple ada-mode shipped as part of the emacs distribution (note: it seems it doesn't work correctly); * a more elaborate one from Steven D. Litvintchouk of Mitre Corp called electric-ada (available from?--NO INFORMATION); and * gnu-ada mode. Here is a small description of the features of this mode: Compile programs within emacs Run compiler as inferior of Emacs, and parse its error messages. NOTE: I believe that this feature will only work with VADS, but it might have been tailored to work with other compilers. Ada dired It supplies a form of dired that helps manage the VADS environment, and it adds ADA vads commands into ada mode. Unlike a previous dired-ada implementation, this version uses the existing dired mode functions except where there is unresolvable conflict. Thus, this is more like a minor mode to dired. Very important because on actual version of emacs 19(beta), in fact lemacs (lucid emacs), dired has changed and we can no longer use gnu-ada mode :-( you can consult the Ada Language Reference Manual (*) during parsing error message. (*)You can get one in e.g. the Public Ada Library. smart indentation Tries hard to do all the indenting automatically. Emphasizes correct insertion of new code using smart templates. Smart template commands (bnf) This is essentially a bnf processor/language-sensitive editor. The next message will give you an ada bnf file that you can use within ada-mode to expand nonterminals. But you can roll your own grammars (e.g., your design grammar or an ADL) and put them in *.bnf files ... The BNF rule set is stored as a list of rules. debugging Ada programs within emacs A facility is provided for the simultaneous display of the source code in one window, while using a.db to step through a function in the other. A small arrow "=>" in the source window, indicates the current line. Move from procedure to procedure or package to package tags Ada and other things ... You can find the gnu-ada mode in where did it go? as well as in the PAL, under directory ftp://wuarchive.wustl.edu/pub/languages/ada/swtools/emacs/adamode. 6.2: Are there versions of lex and yacc that generate Ada code? The Arcadia project produced the tools aflex and ayacc, both written in Ada and producing Ada code. They can be found in directory ftp://liege.ics.uci.edu/pub/irus (Internet address: 128.195.1.5, 128.195.13.1). 6.3: Where can I get a yacc/ayacc grammar to read Ada code? A yacc and lex grammar for Ada 83 is available via FTP from the comp.compiler archives at primost.cs.wisc.edu and via e-mail from the compilers server at compilers-server@iecc.cambridge.ma.us . A yacc grammar for Ada 95 is available in ftp://sw-eng.falls-church.va.us/public/AdaIC/docs/standard/95lrm_rat /grammar9x.y and a lex grammar for Ada 95 is available in ftp://sw-eng.falls-church.va.us/public/AdaIC/docs/standard/95lrm_rat /lexer9x.l. 6.4: What is Anna, and where can I get it? Anna is a language for formally specifying Ada programs. It extends Ada with various different kinds of specification constructs from ones as simple as assertions, to as complex as algebraic specifications. A whole lot of tools have been implemented for Anna, including: 1. The standard DIANA extension packages, parsers, pretty-printers. 2. Semantic checker (very similar to standard semantic checkers for programming languages). 3. Specification analyzer -- this is a tool used to test a specification for correctness before a program based on the specification is written. 4. Annotation transformer -- this transforms Anna specification constructs into checks on the Ada program that is developed based on the specification. This tool is currently in the process of being enhanced so that it can handle at least all the legal Ada programs in the ACVC test-suite. 5. Runtime debugger -- The instrumented program output by the annotation transormer can be run with a special debugger that allows program debugging based on formal specifications. All tools have been developed in Ada and are therefore extremely portable. Anna has been ported to many platforms, details of which can be obtained from the person who handles Anna releases. You can send e-mail to anna-request@anna.stanford.edu for answers to such questions. Actually, there is also a mailing list -- anna-users@anna.stanford.edu. Send e-mail to the earlier address if you want to get on this list. One could view Anna and its toolset as a *very* significant enhancement of assertions that are provided in languages such as C (using the assert statement). The enhancements are in the form of both (1) many more high level specification constructs; and (2) more sophisticated tool support. However, there are those who would not even wish to compare Anna with C assertions! :-) The Anna tools may be found in directory ftp://anna.stanford.edu/pub/anna. 6.5: What is DRAGOON, and where can I get it? DRAGOON is a language, implemented as an Ada preprocessor (i.e., it generates pure Ada). DRAGOON is truly object-oriented, including complete support for multiple inheritance. A very nice feature of DRAGOON not found in many OO languages is the concept of "behavioral" inheritance. This allows you to keep the concurrent behavior of object separated from the object class hierarchy. The book by Colin Atkinson, "Object-Oriented Reuse, Concurrency and Distribution: An Ada-Based Approach" (ACM Press, 1991, ISBN: 0201565277), is very well written and describes the language succinctly and completely. For a copy of the preprocessor, contact: Mr. Andrea Di Maio TXT Ingegneria Informatica S.p.A. Via Socrate, 41 20128 Milan, ITALY phone: + 39-2-2700 1001 6.6: Where can I get language translators? The AdaIC maintains a Products and Tools Database on its bulletin board (703/614-0215), and one of the categories is translators. (The list of products should not be considered exhaustive; if you wish to suggest additions, please contact the AdaIC.) Besides access to the database via the bulletin board, you can also call the AdaIC (800-AdaIC-11 or 703/685-1477) and ask for a customized search. Should I? In addition to all the usual caveats, however, it should also be noted that translation itself is a controversial issue. When a project makes the transition to Ada from some other language, one question that arises is whether to translate older code into Ada. Among the immediate considerations are how much of the code can in fact be translated by a program intended for that purpose, versus how much will still require re-coding by hand. And will the translated code suffer a significant loss in speed of execution? Further, a project must consider whether the translated code will reflect sound software engineering and be readily understandable and modifiable. Or will the translated code be merely "Fortranized Ada" or "Cobolized Ada", or the like, possibly retaining limitations present in the earlier code? Portability is also a problem. The resolution of such issues will require an understanding of the earlier code, an appreciation of the similarities and differences between its language and Ada, and an evaluation of the translation program under consideration. 6.7: What is ASIS? The Ada Semantic Interface Specification is a layered vendor-independent open architecture. ASIS queries and services provide a consistent interface to information within the Ada Program Library created at compile time. Clients of ASIS are shielded and free from the implementation details of each Ada compiler vendor's proprietary library and intermediate representation. ASIS Version 1.1.0 is the latest version of the ASIS83 1.1 (Ada 83) de facto industry standard. It differs from the previous ASIS83 Version 1.1 in errata, clarifications, and two new functions in Asis.Declarations (Implicit_Components and Implicit_Variant_Components). ASIS Version 2.0.0 is the Ada 9x version of ASIS, called ASIS9X. As errors, misunderstandings, and clarifications are discovered, the ASIS Working Group will release new edited versions of the specification. The latest working draft for ASIS is ASIS 1.1.0, dated July 1993. Your comments are welcome, if you wish to see replies to your comments, please join the e-mail discussion group (discussed below) first. 6.7.1: How can I find out more about ASIS? Can I take part in its development? The following electronic mail forums now exist for the ASISWG. asiswg-technical@ajpo.sei.cmu.edu technical discussions asiswg@ajpo.sei.cmu.edu high-level non-technical discussions To have your email address added to these forums, send e-mail to: asiswg-technical-request@ajpo.sei.cmu.edu asiswg-request@ajpo.sei.cmu.edu Include your preferred e-mail address, name, telephone number, and surface mail address. 6.7.2: How can I get hold of ASIS? ASIS versions 2.0.0, 1.1.1, and 1.1.0 are available from directory ftp://sw-eng.falls-church.va.us/public/AdaIC/work-grp/asiswg _________________________________________________________________ 7: Bindings 7.1: General The AdaIC (see question 5.2, above) has a report on "Available Ada Bindings". It can be ordered in hardcopy as flyer T82, or it can be downloaded. It is available by anonymous FTP on the AdaIC host in directory ftp://sw-eng.falls-church.va.us/public/AdaIC/tools/bindings 7.2: POSIX/Ada 7.2.1: What is the status of the POSIX/Ada work? The IEEE approved IEEE Standard 1003.5-1992 in June 1992. This is the Ada Binding to the facilities defined in ISO 9945-1:1989/IEEE 1003.1-1990, the POSIX System Services. IEEE Standards Committee P1003.5 is now working on Ada bindings to IEEE draft standards 1003.4, Real-Time Extensions and 1003.4a, Threads Extensions. Current plans call for an IEEE ballot in October 1993, with IEEE approval in September 1995. For more information, contact the P1003.5 Chairman, Jim Lonjers (lonjers@vfl.paramax.com, 805/987-9457). 7.2.2: How can I get a copy of POSIX/Ada? You can buy a copy of the standard from the IEEE. The order number is "SH 15354", and the mailing address is "IEEE Service Center, 445 Hoes Lane, Piscataway, NJ 08855-1331". They will accept credit-card orders at 1-800/678-4333. The cost is $62.50 + $5.00 s/h ($43.75 + $4.00 s/h for IEEE Members). 7.2.3: Is it available via FTP? Current IEEE policy prohibits electronic distribution of IEEE standards. Proceeds from the sale of IEEE standards help support the IEEE standards program. However, The POSIX P1003.5 committee has been able to work out an arrangement with the IEEE to make the POSIX/Ada package specifications available for distribution via e-mail and anonymous FTP from directory ftp://sw-eng.falls-church.va.us/public/AdaIC/tools/bindings/POSIX 7.3: How do I interface X Window System with Ada? This question turns out to be pretty darn hard to answer easily. There are at least three variables that need to be filled: 1. platform where you are going to be running. 2. compiler you would like to use. 3. level/flavor of X you would like to run (e.g., just need bindings to Xlib, want Openlook as opposed to Motif, etc). Once you fill all three of the above, then you can start to get answers. In order to keep the answer brief, companies that offer such products are simply listed, along with locations where free versions are available. Before giving you the list, a little history is in order. The first Xlib bindings that were publically available were done by SAIC for STARS. This implementation had many bugs, but it was there, and it was free. This version was eventually withdrawn from the STARS repository, and has now been replaced with a better one. In addition, SAIC has done an Xt implementation based on these Xlib bindings (also for STARS). NOTE: the above description may well be inaccurate, corrections are welcome. Now, for the list: First off, there is a pretty complete list of available bindings for X at the AdaIC. FTP Location: ftp://sw-eng.falls-church.va.us/public/AdaIC/tools/bindings/xwinbind.txt Free versions: STARS: bindings to Xlib and Xt. Available on source.asset.com. Note: the ASSET host no longer takes anonymous FTP. To request an account, contact: info@source.asset.com Non-free versions: SERC: bindings to Xlib/Xt/Motif contact: well!sercmail@apple.com (Scott Cleveland) Verdix: bindings to Xlib/Xt/Motif (Note that bindings to Xview are included with the SunAda Sun4 compiler) contact: moskow@verdix.com (Paul Moskowitz) ATC: bindings to Xlib/Xt/Motif contact: ??? TeleSoft (now part of Thomson Software Products, ex-Alsys): bindings to Xlib/Xt/Motif (TeleWindows) (Note that bindings to Xview are included with the TeleSoft Sun4 compiler) contact: marketng@alsys.com X-based GUI (Graphical User Interface) Builders: Objective (OIS): Screen Machine contact: Phil Carrasco (703/264-1900) TeleSoft (now part of Thomson Software Products, ex-Alsys): TeleUSE contact: philippe@telesoft.com EVB Software Engineering, Inc. : GRAMMI contact : info@evb.com or info_server@evb.com with subject "send grammi" Sun Microsystems: DevGuide contact: ??? SERC: UIL-to-Ada code generator (not really a GUI-builder, but works with several builders to generate Ada instead of other languages). contact: well!sercmail@apple.com (Scott Cleveland) _________________________________________________________________ 8: Is there a list of good Ada books? Just for a list of texts, etc. (no evaluations or recommendations), you might take a look at ftp://sw-eng.falls-church.va.us/public/AdaIC/ed-train/adabooks.txt An Annotated Sampling of Ada-Oriented Textbooks November 1994 Michael B. Feldman 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 (with contributions from Jack Beidler, Duane Jarc, Suzanne Pawlan Levy, Mathew Lodge, 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. 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. 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. Group 1: Books Suitable for a First Course in Programming 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. 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 94 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 94, but shows very nicely what is possible in Ada 83 (instead of just what is _not_ possible), and shows how Ada 94 adds functionality. Smith, James F., and Thomas 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. Group 2: Other Books Intended for Undergraduate Courses Ben-Ari, M. Principles of Concurrent and Distributed Programming. Prentice-Hall 1990. (OS/concurrency) ISBN 0-13-711821-X 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 is currently under revision with Addison-Wesley and should appear in 1995. Fischer, C., and R. LeBlanc. Crafting a Compiler. Benjamin Cummings, 1988. (compilers) ISBN 0-8053-3201-4 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, Bruce. Introduction to Abstract Data Types Using Ada. Prentice-Hall, 1994. (data structures) ISBN 0-13-045949-6 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. (file structures) ISBN 0-8053-0440-1 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. (comparative languages) ISBN 0-8053-7132-X 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. (advanced data structures) ISBN 0-534-14448-9 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. Group 3: A Selection of Other Ada-Related Books Barnes, J. 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. This just-out fourth edition has a 100-page summary of Ada 95. 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, Alan, and Geoff 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 95, and this is by no accident -- the authors frequently point out that the implementations in FC-Pascal are taken from Ada 95'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, Alan and Wellings, Andy 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. 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. An English translation would be a real contribution to the Ada literature. 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. Naiditch, D.J. Rendezvous with Ada New York: John Wiley and Sons, 1989. ISBN 0-471-61654-0 A nice, relatively quick survey of the language for experienced programmers. Warning: there are not too many complete programs here, at least at the beginning. But overall, this is a good choice, less overwhelming than, say, Cohen, for "learning the language" quickly. Nyberg, K. (editor) The Annotated Ada Reference Manual.(3rd edition) Grebyn Corporation, 1993. This is the definitive work on Ada 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 exceptions, packages and even procedures 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.