I'll be doing a session with the above title for the BCS Edinburgh branch on 2011-09-14 at 18:30, unsurprisingly in Edinburgh. Details are to be found on their website here. I repeat the marketing blurb here:
In the beginning, a computer had but one processor and one memory and programmers knew what to do. Unless of course their program involved concurrency, in which case they had to learn about locks and sempahores and monitors and all manner of things arcane, and indeed, obscure. But there were great minds at work and as well as many "toy problems" to help programmers learn how to use locks and semaphores and monitors, many new higher level applications structuring models were invented: Actor Model, Dataflow Model, Communicating Sequential Processes (CSP) - to name but three. Sadly these models were eschewed by the mainstream, who convinced themselves, and nigh on everyone else, that operating systems techniques of shared-memory multithreading were a necessary evil of applications programming. And concurrent programming was deemed hard. And parallel programming harder, even when using frameworks such as MPI.
Then we had the Multicore Revolution, which started about 2004 and will continue for many years yet. This brought parallelism from the upper stratosphere of high performance computing (HPC) to the very heart of the mainstream. Worse, processor clock speeds stopped their even increasing rise, terminating the free ride of ever increasing performance of single threaded programs. So mainstream programming had to learn how to do concurrent and parallel programming, and they said it was hard, which it is. Fortunately some remembered the old models, and they were revived, and given new life. And the models prospered, as it is increasingly clear to all programmers that shared- memory multithreading is indeed very hard, and should not be used for applications programming, except where direly necessary
GPars is a Groovy/Java framework that brings Actor Model, Dataflow Model, CSP, Agents and other interesting high-level program structuring tools to the world of Java and Groovy programming. In this session we will look at some of these tools and techniques, and indeed idioms, and show that concurrent and parallel programming can be easy. Indeed it can be fun, which is a necessity for good programs.