Concurrent object-oriented programming

Communications of the ACM - Tập 33 Số 9 - Trang 125-141 - 1990
Gul Agha1
1Univ. of Illinois at Urbana-Champaign, Urbana

Tóm tắt

Three significant trends have underscored the central role of concurrency in computing. First, there is increased use of interacting processes by individual users, for example, application programs running on X windows. Second, workstation networks have become a cost-effective mechanism for resource sharing and distributed problem solving. For example, loosely coupled problems, such as finding all the factors of large prime numbers, have been solved by utilizing ideal cycles on networks of hundreds of workstations. A loosely coupled problem is one which can be easily partitioned into many smaller subproblems so that interactions between the subproblems is quite limited. Finally, multiprocessor technology has advanced to the point of providing supercomputing power at a fraction of the traditional cost. At the same time, software engineering considerations such as the need for data abstraction to promote program modularity underlie the rapid acceptance of object-oriented programming methodology. By separating the specification of what is done (the abstraction) from how it is done (the implementation), the concept of objects provides modularity necessary for programming in the large. It turns out that concurrency is a natural consequence of the concept of objects. In fact Simula, the first object-oriented language, simulated a simple form of concurrency using coroutines on conventional architectures. Current development of concurrent object-oriented programming (COOP) is providing a solid software foundation for concurrent computing on multiprocessors, Future generation computing systems are likely to be based on the foundations being developed by this emerging software technology. The goal of this article is to discuss the foundations and methodology of COOP. Concurrency refers to the potentially parallel execution of parts of a computation. In a concurrent computation, the components of a program may be executed sequentially, or they may be executed in parallel. Concurrency provides us with the flexibility to interleave the execution of components of a program on a single processor, or to distribute it among several processors. Concurrency abstracts away some of the details in an execution, allowing us to concentrate on conceptual issues without having to be concerned with a particular order of execution which may result from the quirks of a given system. Objects can be defined as entities which encapsulate data and operations into a single computational unit. Object models differ in how the internal behavior of objects is specified. Further, models of concurrent computation based on objects must specify how the objects interact, and different design concerns have led to different models of communication between objects. Object-oriented programming builds on the concepts of objects by supporting patterns of reuse and classification, for example, through the use of inheritance which allows all instances of a particular class to share the same method. In the following section, we outline some common patterns of concurrent problem solving. These patterns can be easily expressed in terms of the rich variety of structures provided by COOP. In particular, we discuss the actor model as a framework for concurrent systems 1 and some concepts which are useful in building actor systems. We will then describe some other models of objects and their relation to the actor model along with novel techniques for supporting reusability and modularity in concurrent object-oriented programming. The last section briefly outlines some major on-going projects in COOP. It is important to note that the actor languages give special emphasis to developing flexible program structures which simplify reasoning about programs. By reasoning we do not narrowly restrict ourselves to the problem of program verification—an important program of research whose direct practical utility has yet to be established. Rather our interest is in the ability to understand the properties of software because of clarity in the structure of the code. Such an understanding may be gained by reasoning either informally or formally about programs. The ease with which we can carry out such reasoning is aided by two factors: by modularity in code which is the result of the ability to separate design concerns, and by the ability to abstract program structures which occur repeatedly. In particular, because of their flexible structure, actor languages are particularly well-suited to rapid prototyping applications.

Từ khóa


Tài liệu tham khảo

Agha , G. Actors: A Model of Concurrent Computation in Distributed Systems . MIT Press , Cambridge, Mass ., 1986 . Agha, G. Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge, Mass., 1986.

10.5555/646427.692596

10.1007/BF01887214

Annot , J.K. and den Haan , P.A.M. POOL and DOOM: The object-oriented approach. In Parallel Computers: Object- Oriented, Functional , Logic, P.C. Treleaven , Ed. Wiley , 1990 , pp. 4 - 7 -79. Annot, J.K. and den Haan, P.A.M. POOL and DOOM: The object-oriented approach. In Parallel Computers: Object- Oriented, Functional, Logic, P.C. Treleaven, Ed. Wiley, 1990, pp. 4-7-79.

10.1145/67387.67402

10.1109/2.73

Dally , W. A VLSI Architecture for Concurrent Data Structures . Kluwer Academic Press , 1986 . Dally, W. A VLSI Architecture for Concurrent Data Structures. Kluwer Academic Press, 1986.

Dally , W. The J-Machine: System Support for Actors. In 7bwards Open Information Systems Science , C. Hewitt and G. Agha, Eds. M.I.T. Press , Cambridge, Mass ., to be published. Dally, W. The J-Machine: System Support for Actors. In 7bwards Open Information Systems Science, C. Hewitt and G. Agha, Eds. M.I.T. Press, Cambridge, Mass., to be published.

Dally , W. and Wills , D . Universal mechanisms for concurrency . In Proceedings of Parallel Architectures and Languages Europe (PARLE '89). I~l. II.' Parallel Languages . Springer-Verlag , New York , 1989 . LNCS 366. pp. 19 - 33 . Dally, W. and Wills, D. Universal mechanisms for concurrency. In Proceedings of Parallel Architectures and Languages Europe (PARLE '89). I~l. II.' Parallel Languages. Springer-Verlag, New York, 1989. LNCS 366. pp. 19-33.

Fox , G. , Johnson , M. , Lyzenga , G. , Otto , S. , Salmon , J. , and Walker , D . Solving Problems on Concurrent Processors. kbl General 7~chniques and Regular Problems . Prentice Hall , Englewood Cliffs , New Jersey, 1988 . Fox, G.,Johnson, M., Lyzenga, G., Otto, S., Salmon, J., and Walker, D. Solving Problems on Concurrent Processors. kbl General 7~chniques and Regular Problems. Prentice Hall, Englewood Cliffs, New Jersey, 1988.

10.1016/0004-3702(77)90033-9

Hewitt , C. and Baker , H . Laws for communicating parallel processes . In 1977 IFIP Congress Proceedings, IFiP (August 1977) pp. 987 - 992 . Hewitt, C. and Baker, H. Laws for communicating parallel processes. In 1977 IFIP Congress Proceedings, IFiP (August 1977) pp. 987-992.

Manning , C. Traveler : the actor observatory . In Proceedings of European Conference on Object-Oriented Programming . Springer Verlag, New York , January 1987 . Also appears in Lecture Notes in Computer Science, vol. 276. Manning, C. Traveler: the actor observatory. In Proceedings of European Conference on Object-Oriented Programming. Springer Verlag, New York, January 1987. Also appears in Lecture Notes in Computer Science, vol. 276.

Manning , C. Introduction to programming actors in acore. In 7bwards Open Information Systems Science . C. Hewitt and G. Agha, Ed., MIT Press, Cambridge , Mass , to be published. Manning, C. Introduction to programming actors in acore. In 7bwards Open Information Systems Science. C. Hewitt and G. Agha, Ed., MIT Press, Cambridge, Mass, to be published.

Shriver , B. and Wegner , P. , Eds . Research Directions in Object Oriented Programming . MIT Press, Cambridge , Mass ., 1987 . Shriver, B. and Wegner, P., Eds. Research Directions in Object Oriented Programming. MIT Press, Cambridge, Mass., 1987.

10.1145/74877.74889

Yonezawa , A. , Ed . ABCL: An Object- Oriented Concurrent System . MIT Press, Cambridge , Mass ., 1990 . Yonezawa, A., Ed. ABCL: An Object- Oriented Concurrent System. MIT Press, Cambridge, Mass., 1990.

Yonezawa , A. and Tokoro , M. , Eds . Object-Oriented Concurrent Programming . MIT Press , Cambridge, Mass ., 1987 . Yonezawa, A. and Tokoro, M., Eds. Object-Oriented Concurrent Programming. MIT Press, Cambridge, Mass., 1987.