Toward relaxing assumptions in languages and their implementations

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 distinctions by separating the properties that are necessary to preserve the semantics from the details for which some decision must be made but many choices are adequate. We suggest here that these abstraction techniques can be applied to the problem of pre-emptive language decisions by specifying the essential properties of languages facilities in a skeleton based language and defining interfaces that will accept a variety of implementations that differ in other details.

[1]  John E. Shore,et al.  On the need for fewer restrictions in changing compile-time environments , 1975, SIGP.

[2]  James C. Browne,et al.  Gypsy: A language for specification and implementation of verifiable programs , 1977 .

[3]  James G. Mitchell,et al.  On the problem of uniform references to data structures , 1975, IEEE Transactions on Software Engineering.

[4]  William A. Wulf,et al.  BLISS: a language for systems programming , 1971, CACM.

[5]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977, Commun. ACM.

[6]  Mary Shaw,et al.  An introduction to the construction and verification of Alphard programs , 1976, ICSE '76.

[7]  Per Brinch Hansen,et al.  The programming language Concurrent Pascal , 1975, IEEE Transactions on Software Engineering.

[8]  David Lorge Parnas,et al.  Information Distribution Aspects of Design Methodology , 1971, IFIP Congress.

[9]  David R. Hanson,et al.  The SL5 procedure mechanism , 1978, CACM.

[10]  J. J. Horning,et al.  Report on the programming language Euclid , 1977, SIGP.

[11]  Mary Shaw,et al.  Abstraction and verification in Alphard: Defining and specifying iteration and generators , 1977 .

[12]  Charles Burr Weinstock Dynamic storage allocation techniques. , 1976 .

[13]  J. D. Ichbiah,et al.  Preliminary Ada reference manual , 1979, SIGP.

[14]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[15]  Charles M. Geschke,et al.  On the problem of uniform references to data structures , 1975 .