Toward Relaxing Assumptions in Languages and Their Implementations
Original Publication Date: 1980-Jan-02
Included in the Prior Art Database: 2007-Mar-28
Software Patent Institute
Shaw, Mary: AUTHOR [+3]
AbstractToward Relaxing Assumptions in
Toward Relaxing Assumptions
Languages and Their Implementations
Mary Shaw and Wm. A. Wulf
Computer Science Department
Carnegie Mellon University
2 January 1980
Language implementors frequently make pre-emptive decisions concerning the exact implementations of language features. These decisions constrain programmers' control over their computations and may tempt them to write involuted code to obtain special (or efficient) effects. In many cases, we can distinguish some properties of a language facility that are essential to the semantics and other properties that are incidental. Recent abstraction techniques emphasize dealing with such disfinctions by separating the properties that are necessary to preserve the semantics from the details for which some decision must be made but many ch~ices are adequate. We suggest here that these abstraction techniques can be applied fo the probiem of pre-emptive language decisions by specifying the essential properties of. kngu.ages Cacilities in a skeleton base language and defining interfaces that will accept a variety of implementations that differ in other details.
This'research was sponsored by the National Science Foundation under Grant MCS77-03883
and by the Defense Advanced Research Projects Agency (DOD), ARPA Order No. 3597, monitored by the Air Farce Avionics Laboratory Under Contract F33615-78-C-1551.
The views and conclusions contained in this document are those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of the National Science Foundation, the Defense Advanced Research Projects Agency, or the US Government
Traditionally, the designers and implementors of programming languages have made a
number of decisions about the nature and representation of various language features that the authors feel are unnecessarily pre-emptive. For example, such decisions are commonly made about arrays: most languages support only rectangular arrays, and each implementation generally uses some particular representation, such as row-major order, for all arrays. Neither of these choices is logically necessary: a language could, for example, pergit triangular arrays or arrays in which each row has a different length, and there are many possible representations even for simple rectangular arrays.
In many, even most, situations, the kinds of language and implementation decisions to which we refer are beneficial. The programmer usually doesn't care what representation is chosen for arrays, for example, and the default decisions have been refined through long experience to yield representations that are broadly acceptable. Unfortunately, preci...