A comparison of the object-oriented and process paradigms
The object-oriented and process-oriented paradigms are very similar approaches to programming-in-the-large. Both have computational models based upon message passing; both provide a clear separation between external interfaces and internal algorithms with their local data. On the other hand, the two paradigms differ in many details. For example, the type systems of the two approaches differ in that in the process paradigm, (a) ports rather than processes carry the interface type information, (b) there is no inheritance mechanism, and (c) the code body implementing an abstract operation is associated with the value of a port and not with its type. This paper compares the two paradigms with particular emphasis on their usefulness for the development of large systems. First, the two paradigms are defined independently of particular instances of the paradigm. Then a number of programming issues important to large system design are discussed: dynamic code binding, code reuse, and access control. For each such issue, the mechanisms of each paradigm needed to support it are presented and contrasted. It is argued that the process paradigm subsumes the capabilities of the object oriented paradigm, and has certain advantages for systems which are so large that no single individual has access to the entire system design.