CONCURRENT OBJECT-ORIENTED PROGRAMMING

CONCURRENT OBJECT-ORIENTED PROGRAMMING
复制标题

DOI:
10.1145/83880.84528
复制
发表时间:
1990-09-01
影响因子:
22.7
通讯作者:
AGHA, G
AGHA, G
中科院分区:
计算机科学3区
文献类型:
--
作者:
AGHA, G

文献摘要

被引文献

相似文献

三个重要的趋势强调了并发在计算中的核心作用。首先,个人用户越来越多地使用交互进程,例如,在X窗口上运行的应用程序。第二,工作站网络已经成为资源共享和分布式问题解决的一种经济有效的机制。例如,松散耦合的问题,例如找到大素数的所有因子,已经通过在数百个工作站的网络上利用理想循环来解决。松耦合问题可以很容易地划分为许多较小的子问题,因此子问题之间的相互作用是非常有限的。最后,多处理器技术已经发展到以传统成本的一小部分提供超级计算能力的程度。同时,软件工程方面的考虑,例如需要数据抽象来促进程序模块化,是迅速接受面向对象编程方法的基础。通过将做什么(抽象)的规范与如何做(实现)的规范分离,对象的概念为大规模编程提供了必要的模块化。事实证明,并发性是对象概念的自然结果。实际上,Simula是第一个面向对象的语言,它在传统架构上使用协程模拟了一种简单的并发形式。当前并发面向对象编程(COOP)的发展为多处理器并发计算提供了坚实的软件基础,下一代计算系统很可能基于这种新兴软件技术所开发的基础。本文的目的是讨论COOP的基础和方法。并发性指的是计算部分的潜在并行执行。在并发计算中,程序的组成部分可以顺序执行,也可以并行执行。并发为我们提供了在单个处理器上交错执行程序组件或将其分布在多个处理器上的灵活性。并发将执行中的一些细节抽象出来,使我们能够专注于概念问题,而不必关注特定的执行顺序,这可能是由给定系统的怪癖造成的。对象可以定义为将数据和操作封装到单个计算单元中的实体。对象模型的不同之处在于如何指定对象的内部行为。此外,基于对象的并发计算模型必须指定对象如何交互,不同的设计关注点导致了对象之间不同的通信模型。面向对象编程通过支持重用和分类模式(例如,通过使用允许特定类的所有实例共享相同方法的继承)建立在对象概念的基础上。在下一节中,我们将概述并发问题解决的一些常见模式。这些模式可以很容易地用COOP提供的丰富多样的结构来表示。特别地,我们讨论了作为并发系统框架的参与者模型,以及一些在构建参与者系统时有用的概念。然后,我们将描述其他一些对象模型及其与参与者模型的关系,以及支持并发面向对象编程中的可重用性和模块化的新技术。最后一部分简要概述了COOP中正在进行的一些主要项目。需要注意的是,actor语言特别强调开发灵活的……
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 systems1and 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 …