|

Addison-Wesley / Prentice Hall

Computer Science

My Instructor Resource Center :  Log in or request access

Programming in Ada 2005 with CD
John Barnes

ISBN-10: 0321340787
ISBN-13:  9780321340788

Publisher:  Addison-Wesley
Copyright:  2006
Format:  Paper Bound w/CD-ROM; 848 pp
Published:  06/30/2006
Status: Instock



Ada has carved itself a niche in the safety-critical/embedded/real-time areas. It is the language of choice in application areas where reliability, long term maintainability and similar features are very important. Typical of such areas are defence embedded systems, railway signalling, air traffic control and so on.

Note especially that SPARK which is very successful for critical systems is based on Ada. No other language really has a suitable underlying structure.

This latest edition of the highly successful 'Programming in Ada' has been fully updated to the latest version of the language: Ada 2005.

As an ISO standard, Ada is reviewed every five years. For the 2005 review it was decided that a significant revision would be appropriate. The key changes are as follows:

  • Changes to the OO model to incorporate Java-style multiple inheritance and more rigorous error analysis prior to execution.
  • More flexible but still totally safe manipulation of pointers including better facilities for functional parameterization.
  • Better structure enabling easier decomposition of large programs.
  • Many extensions to the Real-Time facilities ensuring that Ada remains ahead of other languages in this area.
  •  Better interfacing to other systems and languages.
  • Enhanced standard library support including containers.

Foreword          vii

Preface            ix

Part 1  An Overview           1

1          Introduction3

1.1        Standard development    3

1.2        Software engineering     4

1.3        Evolution and abstraction           6

1.4        Structure and objectives of this book       8

1.5        References       10

2          Simple Concepts    11

2.1        Key goals         11

2.2        Overall structure           12

2.3        The scalar type model    17

2.4        Arrays and records        19

2.5        Access types    22

2.6        Errors and exceptions    23

2.7        Terminology      26

3          Abstraction  27

3.1        Packages and private types        27

3.2        Objects and inheritance  30

3.3        Classes and polymorphism         34

3.4        Genericity         39

3.5        Object oriented terminology        41

3.6        Tasking42

4          Programs and Libraries   45

4.1        The hierarchical library  45

4.2        Input–output      47

4.3        Numeric library50

4.4        Running a program        52

P1       Magic Moments      57

Part 2  Algorithmic Aspects         61

5          Lexical Style            63

5.1        Syntax notation  63

5.2        Lexical elements           64

5.3        Identifiers         65

5.4        Numbers           67

5.5        Comments        69

5.6        Pragmas          

6          Scalar Types           71

6.1        Object declarations and assignments       71

6.2        Blocks and scopes         74

6.3        Types   76

6.4        Subtypes           77

6.5        Simple numeric types     80

6.6        Enumeration types         86

6.7        The type Boolean          88

6.8        Categories of types        92

6.9        Expression summary      94

7          Control Structures99

7.1        If statements     99

7.2        Case statements            103

7.3        Loop statements            107

7.4        Goto statements and labels         113

7.5        Statement classification  113

8          Arrays and Records          115

8.1        Arrays  115

8.2        Array types       120

8.3        Array aggregates          125

8.4        Characters and strings   131

8.5        Arrays of arrays and slices        134

8.6        One-dimensional array operations           137

8.7        Records            141

9          Subprograms          147

9.1        Functions          147

9.2        Operators         154

9.3        Procedures       156

9.4        Named and default parameters   162

9.5        Overloading      164

9.6        Declarations, scopes and visibility           165

10        Access Types         171

10.1      Flexibility versus integrity           171

10.2    p; Pool specific access types          172

10.3      Null exclusion and constraints     180

10.4      General access types     183

10.5      Anonymous access types          

10.6      Accessibility      187

10.7      Access parameters        189

10.8      Access to subprograms  193

P2       Sylvan Sorter          199

Part 3  The Big Picture      203

11        Packages and Private Types      205

11.1      Packages          205

11.2      Private types     210

11.3      Primitive operations and derived types    216

11.4      Equality            222

11.5      Limited types    226

11.6      Resource management  230

12        Overall Structure    235

12.1      Library units      235

12.2      Subunits            239

12.3      Child library units           240

12.4      Private child units          245

12.5      Mutually dependent units           

12.6      Scope, visibility and accessibility250

12.7      Renaming         253

12.8      Programs, partitions and elaboration        257

P3       Rational Reckoner261

13        Object Oriented Programming    265

13.1      Type extension  265

13.2      Polymorphism   271

13.3      Abstract types and interfaces     279

13.4      Primitive operations and tags      282

13.5      Views and redispatching            288

13.6      Private types and extensions      294

13.7      Controlled types            300

13.8      Multiple inheritance      

13.9      Multiple implementations            305

14        Exceptions   311

14.1      Handling exceptions       311

14.2      Declaring and raising exceptions315

14.3      Checking and exceptions            320

14.4      Exception occurrences   322

14.5      Exception pragmas       

14.6      Scope of exceptions       326

15        Numeric Types       331

15.1      Signed integer types       332

15.2      Modular types   338

15.3      Real types         340

15.4      Floating point types        341

15.5      Fixed point types           344

15.6      Decimal types   349

16        Parameterized Types        351

16.1      Discriminated record types         351

16.2      Default discriminants     356

16.3      Variant parts     361

16.4      Discriminants and derived types366

16.5      Access types and discriminants  369

16.6      Private types and discriminants   375

16.7      Access discriminants     376

17        Generics       381

17.1      Declarations and instantiations    381

17.2      Type parameters           386

17.3      Subprogram parameters395

17.4      Package parameters      401

17.5      Generic library units       406

18        Tasking         409

18.1      Parallelism        409

18.2      The rendezvous412

18.3      Timing and scheduling    416

18.4      Protected objects           420

18.5      Simple select statements            427

18.6      Timed and conditional calls         431

18.7      Concurrent types and activation  434

18.8      Termination, exceptions and ATC           440

18.9      Signalling and scheduling            446

18.10    Summary of structure    453

19        Object Oriented Techniques       463

19.1      Extension and composition         463

19.2      Examples of interfaces  466

19.3      Mixin inheritance          

19.4      Containers        468

19.5      Iterators            472

19.6      Object factories479

19.7      Controlling abstraction   491

20        Tasking Techniques        

20.1      Dynamic tasks 

20.2      Multiprocessors

20.3      Synchronized interfaces

20.4      Discriminants   

20.5      Task termination           

20.6      Clocks and timers         

20.7      The Ravenscar profile  

P4       Super Sieve497

Part 4  Completing the Story       501

21        Predefined Library503

21.1      The package Standard   503

21.2      The package Ada          506

21.3      Characters and strings   508

21.4      Numerics          522

21.5      Input and output            526

21.6      Text input–output          531

21.7      Streams            541

21.8      Environment commands545

P5       Wild Words  547

22        Container Library  

22.1      Organization of library  

22.2      Doubly linked lists         

22.3      Vectors           

22.4      Maps   

22.5      Sets     

22.6      Indefinite containers     

22.7      Sorting 

22.8      Summary table

23        Interfacing    551

23.1      Representations551

23.2      Unchecked programming           556

23.3      The package System     558

23.4      Storage pools    560

23.5      Other languages            563

P6       Playing Pools          565

24        The Specialized Annexes            569

24.1      Systems Programming   569

24.2      Real-Time Systems       571

24.3      Distributed Systems       573

24.4      Information Systems      575

24.5      Numerics          575

24.6      High Integrity Systems   578

25        Finale579

25.1      Names and expressions579

25.2      Type equivalence          582

25.3      Overall program structure          585

25.4      Portability         594

25.5      Final thoughts    597

Appendices601

A1       Reserved Words, Attributes and Pragmas      601

A1.1     Reserved words            601

A1.2     Predefined attributes      602

A1.3     Predefined pragmas       608

A2       Glossary       611

A3       Syntax           615

A3.1     Syntax rules      615

A3.2     Syntax index     629

Answers to Exercises    637

Bibliography      685

Index    687

 

Programming in Ada 2005

 

John Barnes

 

“This book is going to be a tremendous resource that will prove useful for many years.  It combines a broad description of the entire language, including its predefined libraries, with an in-depth study of a number of areas of particular interest such as object-oriented techniques or concurrency.  It includes extensive examples showing how the numerous features of Ada can be made to work together in practical situations.”

 ~ Pascal Leroy, Chairman of the Ada Rapporteur Group.

 

 

Programming in Ada 2005 is the definitive tutorial and reference for a ground-breaking new version of Ada (Ada 2005), a significant revision of the language of choice for applications where safety, security and reliability are paramount.  

 

The major changes from Ada 95 are:

 

Ø      A new OO model to incorporate Java-style multiple inheritance and more rigorous error analysis prior to execution;

Ø      Synchronized interfaces to unify the OO and concurrent domains – a radical innovation in language design;

Ø      More flexible but totally safe manipulation of pointers;

Ø      An improved structure enabling large programs to be decomposed more easily;

Ø      Many extensions to the Real-Time facilities, keeping Ada ahead of other languages for embedded applications;

Ø      Improved interfacing to other systems and languages;

Ø      Enhanced standard library support including containers.

 

John Barnes was a key member of the original Ada design team and has been a pivotal figure in its evolution ever since.  Over 150,000 students and software engineers have learned Ada from previous editions – widely praised for their witty and urbane style.  He is also the author of High Integrity Software: The SPARK Approach to Safety and Security.

Pearson Higher Education offers special pricing when you choose to package your text with other student resources. If you're interested in creating a cost-saving package for your students contact your Pearson Higher Education representative.