From root Tue Apr 14 09:59:00 1992 Received: from parseq.tds.kth.se by p300.cpl.uiuc.edu with SMTP id AA35872 (5.65c/IDA-1.3.4 for foote); Tue, 14 Apr 1992 09:58:58 -0500 Received: by parseq.tds.kth.se (5.61-bind 1.4+ida/4.0) id AA03735; Tue, 14 Apr 92 16:59:14 +0200 Date: Tue, 14 Apr 92 16:59:14 +0200 From: Donald Liib Message-Id: <9204141459.AA03735@parseq.tds.kth.se> To: foote@p300.cpl.uiuc.edu Subject: position paper Status: RO A Note on Communicational Reflection A Position Paper for the ECOOP'92 Workshop on Object-Oriented Reflection and Metalevel Architectures Donald Liib Dept. of Telecomm. and Computer Science The Royal Institute of Technology 100 44 Stockholm Sweden e-mail: donald@tds.kth.se Recent research efforts on reflective object-oriented (based) systems in our department have taken right direction and can be very promising. Given approach tries to make difference between computational and communicational reflection in object-based programming systems and to give definition of communicative reflection. Also the way to achieve it is described. Two reflective aspects of object-based programming systems can be defined in the following way - the system is computationally reflective, if it can reason about and act upon itself [Smith84] - the system is communicatively reflective if it has ability to chose such order of computations that guarantees reasonable reflective computations efficiency. Those two reflective aspects are interdependent. To get reasonable computations efficiency the reflective programming system have to have ability to chose between the order of computational and communicational reflection. An important aspect to achieve it, we beleave, is to modify the object interface adding communication constraints that are reflectively dependent on object behaviour and/or group of objects it belongs behaviour. One way to achieve it is to introduce so called flowing visibility. A part of objects self-representation, having flowing visibility, can be considered as constraint in reflective computations. This is general objects feature that allows dynamically change access to its certain properties (to self-representation). This is actual especially in case of distributed systems, where concurrent objects are cooperating to solv certain computational or reflective-computational tasks. The range of visibility can be defined from fully public to fully private - fully public means that the property is shared among all objects over the whole distributed system - fully private means that the property is local to the given object. Consequently we can say that objects openness to reflective computations is visibility dependent - more public gives more openness. If visibility is on the state of fully private, only reflective computations upon object itself can be provided. And in turn reflective computations itself can change the visibility to make computations reasonably efficient. Such two way control have similarities to Gul Agha research results. He interprets it in the following way - in running an application program on a system architecture, best control decisions can be made through the two way interaction between the system architecture/environment and the application program [Agha88]. Why not, in reflective distributed programming system, in case of cooperating objects, one of them can be considered as an application running on another. This shows the dynamic nature of the reflective programming system. Lets take concrete property into consideration. One important property in distributed system is objects locality - locality can be considered as the objects shared property giving ability to the object to cooperate to other objects in the whole system In reflective programming system the locality can be dynamic, i.e. can have flowing visibility. According to the range of the visibility of locality objects in distributed system are divided into groups to cooperate, providing reflective computations. In this sense we can talk about group inheritence. Group inheritence and many other interesting research results are collected and published in [Yonezawa92]. Group inheritence using the term flowing visibility can function in the following way - in the group of objects, at a given time, reflective messages can be broadcasted among the group of objects (having the same locality), motivating in this way reflective computations inside this group of objects. On other hand reflective computations can change the visibility of locality (changes in objects behaviour makes causally changes in object self-representation) which can result in objects regrouping. Interesting is that garbage collection in object level is not needed. It can be considered in behaviour level. As a conclusion to this approach - here is no need to divide objects into groups statically. The initial flow state of visibility determines its relations to other existing objects. Reflective computations changing the range of visibility of locality makes the programming system flexible. This research work can be considered as extension to the previous work on PL/LL programming system [ThorelliLiib92]. References [Agha88] Gul Agha: The relation Between Problems in Large-Scale Concurrent Systems and Distributed Databases, Proceedings of International Symposium on Databases in Parallel and Distributed Systems, IEEE, Austin, Texas, December 1988. [Smith84] Brian Cantwell Smith: Reflection and Semantics in Lisp, Proceedings of ACM Conference on Principles of Programming Languages, 1984, pp. 23-35. [ThorelliLiib92] Lars-Erik Thorelli, Donald Liib: An object-based programming system with a linking language, submitted for publication in Software-Practice and Experience. [Yonezawa92] Akinori Yonezawa, Satoshi Matsuoka,Takuo Watanabe, Yuji Ichisugi: Computational Reflection in Object-Oriented Concurrent Computing and its Applications. Dept. of Information Science. University of Tokyo, March 1992.