Terms and Conditions:
M. Ben-Ari wrote:You may download, display and print one copy for your personal use in non-commercial academic research and teaching. Instructors in non-commerical academic institutions may make one copy for each student in his/her class. All other rights reserved. In particular, posting this document on web sites is prohibited without the express permission of the author.
Excerpts from the Preface:
Albert Einstein once said that 'things should be as simple as possible, but not simpler'. Einstein could have been talking about programming languages, as the landscape is strewn with 'simple' languages that, several versions later, have 500-page reference manuals!
The truth is that we expect a lot of our programming languages. Turing machines just aren't sophisticated enough for modern software development; we demand support for encapsulation and abstraction, type checking and exception handling, polymorphism and more. Ada, unlike other languages which grew by gradual addition of features, was designed as a coherent programming language for complex software systems. As if to justify Einstein's saying, Ada is no more complex than the
final versions of 'simpler' languages.
However, the complexity of modern programming languages leaves textbook writers with a painful dilemma: either gloss over the gory details, or write books that are heavy enough to be classified as lethal weapons. Is there another way?
Strange as it may seem, you can get an excellent
concise description of Ada 95 for free: the
Ada Reference Manual (ARM) (Taft & Duff 1997), which is the document defining the language standard. The
ARM has a reputation for being ponderous reading meant for 'language lawyers'. Nevertheless, I believe that, with a bit of guidance, software engineers can learn to read most of the ARM.
Ada for Software Engineers is written to equip you with the knowledge necessary to use the Ada 95 programming language to develop software systems. I will try to teach you how the individual language constructs are used in actual programs, and I will try to explain the terminology and concepts used in the language standard.
Intended Audience:
The book is intended for software engineers making the transition to Ada, and for upper-level undergraduate and graduate students (including those who have had the good fortune to study Ada as their first programming language!). No specific Ada knowledge is assumed; the prerequisites are a basic knowledge of computer science and computer systems, and significant programming experience (not necessarily in Ada). As the title implies, this book is for you if you are a software engineer or training to become one.
The Ada language will be taught using a few—relatively large—case studies, rather than a large number of small examples each crafted to demonstrate a particular construct or rule. Experienced programmers know that the key to mastering a programming language is not to memorize the syntax and semantics of individual constructs, but to learn how to integrate the constructs into language-specific paradigms. We will need to gloss over details when explaining a case study; rest assured that everything will eventually be explained, or you will find a pointer to the explanation in the
ARM. Certain sections marked with one or two asterisks should be omitted during your initial study of Ada. This material is not necessarily more difficult, but you can't learn everything at once, and these are topics that can be left for your second and third reading of the book.