Simple concurrent object-oriented programming
Overview
Concurrency, which used to be the privilege of highly specialized application domains - operating systems and network programming - now rears its head in many traditional areas. Multi-threading, in particular, is of interest to ever more applications. Yet the techniques used to program concurrent applications remain low-level, as illustrated for example by widely used multithreading libraries. The resulting applications are difficult to produce, to debug and to maintain; the code is complex, relying on low-level notions such as semaphores. There is a stunning gap between the object-oriented concepts that are increasingly popular for the architecture of sequential programs and the techniques used for handling the multithreaded or concurrent parts.
The SCOOP (Simple Concurrent Object-Oriented Programming) concurrency model seeks to remove this gap by bringing to the world of concurrency the same systematic O-O development techniques that have made their mark in the sequential world.
Basic concepts
SCOOP starts from the observation that the basic framework of object-oriented computation lends itself naturally to a concurrent extension. Objects are independent entities with their own state and controlled access to their mechanisms. Contrary to most other approaches to concurrent O-O programming, we do not attempt to make objects "active", an approach that quickly lead to contradictions such as the "inheritance anomaly". Instead, SCOOP makes explicit the notion of processor, implicit in usual views of computation. Programs apply actions to objects using processors.
References
- Piotr Nienaltowski. Practical framework for contract-based concurrent object-oriented programming. PhD Dissertation, ETH Zurich, 2007. [paper pdf]
- Bertrand Meyer. Object-Oriented Software Construction, Second Edition, Chapter 30, Prentice Hall, 1997, ISBN 0-13-629155-4. [chapter 30 html]
- EiffelSoftware. Concurrent Eiffel with SCOOP. [website html]