Skip to main content

Currently Skimming:

B Technical Descriptions of Ada and Other Third-Generation Programming Languages
Pages 80-87

The Chapter Skim interface presents what we've algorithmically identified as the most significant single chunk of text within every page in the chapter.
Select key terms on the right to highlight them within pages of the chapter.


From page 80...
... ADA 83 Ada 83 was the result of a requirements-driven language design competition, beginning in 1975 with the first "Strawman" requirements document, continuing through a series of requirements documents culminating in the "Steelman" document, and resulting in a preliminary standard in 1980, an American National Standards Institute (ANSI) standard in 1983, and an International Organization for 80
From page 81...
... Ada 83 supports strong type checking, extended to provide strong distinctions between otherwise structurally equivalent numeric types, as well as between otherwise structurally equivalent array types and pointer types. Ada 83 is unusual in that it allows the programmer to distinguish two same-sized integer types as representing distinct abstractions, and to specify that an array is meaningfully indexed by one, but not the other, or that a subprogram can meaningfully be passed by one, but not the other.
From page 82...
... fin February 1995, the revised language was approved as an ISO standard, replacing the former edition of the standard. The overall goal of the Ada 95 design process was to maintain the reliability, maintainability, human engineering, and efficiency of Ada 83, while enhancing the flexibility and extensibility of the language, and the programmer's control over storage management and synchronization.
From page 83...
... No bounds information is carried with array parameters, and no bounds checking is cleaned by the language standard, although some tools exist that will check for out-of-bounds references. Arrays are treated by the language as essentially constantvalued pointers, and array indexing is defined in terms of an indirection applied to the addition of a pointer and an integer index.
From page 84...
... . Two kinds of multiple inheritance are supported: the default inheritance replicates the fields if the same base class is inherited through multiple paths, and the virtual inheritance shares fields if the same base class is inherited through multiple paths.
From page 85...
... Java has no direct support for enumeration types. Named integer constants may be used, but the compiler provides implicit widening between integer types on assignment and parameter passing and allows any integer type to index any array.
From page 86...
... The basic primitives of C++ remain unsafe, although there are additional mechanisms available for creating safe abstractions. lava takes the route of strongly enforcing run-time consistency, with all the necessary checks to ensure that a program does not corrupt data outside its prescribed space, including pointer initialization and null checking, array-bounds checking, and conversion checks.
From page 87...
... Java's synchronized methods, with wait/notify operations, provide similar capability, although with less encapsulation of the fields requiring synchronized access, a more race-prone "notification"-oriented synchronization model, and no particular concern for priority inversion. Although Ada is a general-purpose 3 GE, it was designed with extra attention to the concerns of real-time, embedded, and critical systems developers, namely very thorough consistency checking, mechanisms to support a very "static" storage allocation model, and multithreading support with timeand priority-cognizant constructs.


This material may be derived from roughly machine-read images, and so is provided only to facilitate research.
More information on Chapter Skim is available.