Modern society is becoming very dependent upon software. Our transport systems, financial systems, medical systems and defense systems all depend to a very large degree upon software. As a consequence the safety of many human lives and much property now depends upon the reliable functioning of software. Moreover, the fall in the cost of hardware has now made possible the development of large software systems.
This document was prepared by the author as a consultant to the
Ada 9X Design Team based at Intermetrics Inc. It is based on the first part of
the Ada 95 Rationale which accompanies the new standard.
Acknowledgements
John Barnes,
Reading, England
January 1995.
Contents
Executive Summary
1.1 The Revision Process
2. Highlights of Ada 95
1.2 The Requirements
1.3 The Main User Needs
1.4 The Approach
1.5 Using this Document
2.1 Programming by Extension
3. Overview of the Ada Language
2.2 Class Wide Programming
2.3 Abstract Types and Subprograms
2.4 Summary of Type Extension
2.5 Dynamic Selection
2.6 Other Access Types
2.7 Hierarchical Libraries
2.8 Private Child Units
2.9 Protected Types
2.10 Task Scheduling and Timing
2.11 Generic Parameters
2.12 Other Improvements
2.13 The Predefined Library
2.14 The Specialized Needs Annexes
2.15 Conclusion
3.1 Objects, Types, Classes and Operations
4. Upward Compatibility
3.1.1 Objects and Their Types
3.2 Statements, Expressions and Elaboration
3.1.2 Types, Classes and Views
3.1.3 Operations and Overloading
3.1.4 Class Wide Types and Dispatching
3.1.5 Abstraction and Static Evaluation
3.3 System Construction
3.3.1 Program Units
3.4 Multitasking
3.3.2 Private Types and Information Hiding
3.3.3 Object Oriented Programming
3.3.4 Generic Units
3.3.5 Separate Compilation
3.3.6 Library Units
3.3.7 Program Composition
3.3.8 Interfacing to Other Languages
3.4.1 Tasks
3.5 Exception Handling
3.4.2 Communication and Synchronization
3.4.3 Protected Objects
3.4.4 Protected Operations and Entries
3.4.5 Select Statements
3.4.6 Timing
3.4.7 Scheduling
3.6 Low Level Programming
3.6.1 Pragmas
3.7 Standard Library
3.6.2 Specifying Representations
3.6.3 Unprotected Shared Variables
3.6.4 Unchecked Programming
3.8 Application Specific Facilities
3.9 Summary
4.1 Reserved Words
References
4.2 Type Character
4.3 Library Package Bodies
4.4 Indefinite Generic Parameters
4.5 Numeric Error
4.6 Other Incompatibilities
4.6.1 Unlikely Inconsistencies
4.7 Conclusion
4.6.2 Unlikely Incompatibilities 68
4.6.3 Implementation Dependent Incompatibilities
4.6.4 Error Incompatibilities