Search This Blog

Loading...

2009-05-25

SCOOP: Concurrent Programming Made Easy

This 11 pages paper by Piotr Nienaltowski, Volkan Arslan and Bertrand Meyer is a very concise introduction about the SCOOP model that I commented on my previous post. Click here to get a copy of the paper.

Abstract: "The SCOOP model (Simple Concurrent Object-Oriented Programming) provides a simple yet very powerful mechanism for parallel computation. The model takes advantage of the inherent concurrency implicit in object-oriented programming to provide programmers with a simple extension enabling them to produce paralle applications with little more effort than sequential ones. SCOOP is applicable to many different physical setups, from multiprocessing to multithreading, highly parallel processors for scientific computation, distributed computation, and Web services. In this article, we present the basic concepts of the model and show how easily parallel and distributed computation can be achieved in a way that preserves the full power of all object-oriented techniques. Several programming examples illustrate the discussion."

Summary:
  • Based on the concepts of Design by Contract
  • Additional keyword to the language: separate
  • Minimalist mechanism
  • Full use of object-oriented techniques
  • Avoids deadlocks
  • 2-level architecture: platform-independent (SCOOP) and platform-specific (low-level concurrency/threading mechanism)
  • Many processors (abstractions) provide threads of control for the application
  • The separate keyword basically indicates that the object, class or function will be handled by a different processor
  • There are Separateness Consistency Rules
  • Preconditions that involve separated entities force the client object to wait until they are satisfied
  • Lockings are automatic and controlled by the mechanism
  • Separated calls are scheduled to when the necessary locks are acquired and wait conditions are satisfied
  • Can handle distributed computation when processors are mapped to different physical resources
  • Distribution is configured through the Concurrency Control File but only done at runtime
Your comments are welcome.

Concurrency on Object-Oriented Systems

Last weekend I was visiting the Channel 9 site for more of their videos and I stumbled upon an interview of Bertrand Meyer, by Erik Meijer, on May/2008. The interview was about concurrency on object-oriented systems and Bertrand gave an introduction to the approach that he developed years ago (before the multi-core fever) for the Eiffel language and that seems to be a promising contender for the current quest about concurrency on multi-core systems.
Simple Concurrent Object-Oriented Programming, a.k.a SCOOP, doesn't force the developer to adopt a radically different programming paradigm (besides it relies much on the Design by Contract characteristics of Eiffel) and actually the only overhead is the addition of an extra reserved word.
SCOOP, according to me, doesn't seem to allow fine-grained/fine-tuned concurrency but, for sure, can speedup existing code after superficial changes in the code. It would be a welcome and low-cost feature for business-oriented applications. It would also be nice to see implementations of SCOOP on mainstream languages, like Java and C#, and a conversion tool that somehow could infer places in your existing code that would take advantage of SCOOP would be priceless.

Click here to watch or download the interview.

2009-05-23

The Cloud Wars

I gave a brief presentation about concepts of cloud computing to my colleagues of the Polelo Research Group during our weekly meeting on 2009-05-21. You can see the slides below or clicking here:

2009-05-04

Actors in a New "Highly Parallel" World

I had my 1st scientific paper published in the proceedings of 2nd ACM/IEEE ICSE Warm-Up Workshop. Basically it describes my current, and ongoing, MSc research project, at the Polelo Research Group of the University of Pretoria, that is focused on the Actor-Model of concurrency.
Visit here to get a copy of the paper and here to see the slides of my presentation at the workshop, that happened in parallel with the 5th IFIP TC2 Summer School on Software Technology, from Mar/30th to Apr/03rd in Strand, South Africa. Visit the site for more information about the programme of both events.
Your comments are welcome.

ABSTRACT: "The actor-model of computation was forged 25 years ago and, despite its natural fitness for concurrent programming, it never got traction on mainstream programming languages and as a widespread programming technique, it has been restricted mainly to academic experiments. The functional programming paradigm, available since the inception of the first high-level programming languages, despite the success of some of its languages, mostly on the academic environment, and its natural ability to avoid the inherent problems of concurrency, also never got traction on commercial development, being overshadowed by the proliferation of imperative languages. Recently, Moore's Law reached a limit and, as an alternative way of evolving processors, multi-core ones were developed, turning parallel systems into commodity. This paper presents the guidelines of research that is being conducted in response to the actual software engineering crisis, on how to effectively exploit this new highly parallel world of multi-core processors on computers and other devices. In search of an effective and efficient concurrent programming model, currently available actor-model implementations will be scrutinized in order to evaluate their strengths and weaknesses against the omnipresent shared-state, multi-threaded model of concurrent programming."