A Value Transmission Method for Abstract Data Types

data types have proved to be a useful technique for structuring systems. In large systems it is sometimes useful to have different regions of the system use different representations for the abstract data values. A technique is described for communicating abstract values between such regions. The method was developed for use in constructing distributed systems, where the regions exist at different computers and the values are communicated over a network. The method defines a call-by-value semantics; it is also useful in nondistributed systems wherever call by value is the desired semantics. An important example of such a use is a repository, such as a file system, for storing long- lived data. Abstract data types have proved to be a useful technique for structuring systems. They permit the programmer to encapsulate details of the representation of data so that these details can be changed with minimal impact on the program as a whole. It is sometimes useful, especially in large programs, to use different implementations of a data abstraction in different regions of the program. Current languages that support data abstraction, however, limit a program to a single implementation (11, 17). The reason for this limitation is the difficulty of com- municating between the regions using different implementations. This paper describes a technique for communicating abstract values between such regions. The method defines a call-by-value semantics. The method was developed for use in distributed systems, where the regions exist at different computers and the values are communicated over the network. It is also useful in

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

[2]  K. R. Sollins,et al.  COPYING COMPLEX STRUCTURES IN A DISTRIBUTED SYSTEM , 1979 .

[3]  D. Kapur TOWARDS A THEORY FOR ABSTRACT DATA TYPES , 1980 .

[4]  David A. Fisher Copying cyclic list structures in linear time using bounded workspace , 1975, CACM.

[5]  Barbara Liskov,et al.  Guardians and actions: linguistic support for robust, distributed programs , 1982, POPL '82.

[6]  Robert E Millstein,et al.  The Foreman: Providing the Program Execution Environment for the National Software Works. Revision 1 , 1976 .

[7]  E. J. Feinler,et al.  ARPANET protocol handbook , 1976 .

[8]  C. A. R. Hoare,et al.  Proof of correctness of data representation , 1975, Language Hierarchies and Interfaces.

[9]  Stephen N. Zilles,et al.  Programming with abstract data types , 1974 .

[10]  Barbara Liskov,et al.  On Linguistic Support for Distributed Programs , 1982, IEEE Transactions on Software Engineering.

[11]  Robert S. Fabry,et al.  How to design a system in which modules can be changed on the fly , 1976, ICSE '76.

[12]  Douglas W Clark,et al.  Copying List Structures without Auxiliary Storage , 1975 .

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

[14]  Barbara Liskov,et al.  Guardians and Actions: Linguistic Support for Robust, Distributed Programs , 1983, TOPL.

[15]  Alan Snyder,et al.  Exception Handling in CLU , 1979, IEEE Transactions on Software Engineering.

[16]  M. P. Herlihy TRANSMITTING ABSTRACT VALUES IN MESSAGES , 1980 .

[17]  Stephen N. Zilles,et al.  Programming with abstract data types , 1974, SIGPLAN Symposium on Very High Level Languages.