Jeepers GPars, It's All so Easily Parallel

Wednesday 14th September, 6:30 pm.

Speaker: Russel Winder.

Room 4.31 (fourth floor), University of Edinburgh Informatics Forum, 10 Crichton Street, Edinburgh, EH8 9AB - map (click on Informatics Forum in the list of buildings).


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, it 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, and 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-memoty 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.

About the speaker


Russel was originally a theoretical particle physicist but decided in 1980 that being a UNIX systems programmer was more fun. Which it was. However, academia continued to call and he moved to UCL to lecture in programming, software engineering and human-computer interaction, and do research on parallel programming languages, philosophy of information systems, and socio-technical aspects of software development.

After 13 years at UCL, Russel moved to KCL to be Professor of Computing Science. Having revamped the teaching programme, continued the research on parallel programming languages, and started research programmes in health informatics, it was time for new challenges so he left KCL to become CTO of OneEighty Software Ltd, a company using novel virtual machine approaches to embedded systems. Unfortunately, the money ran out for this start-up before the income flooded in and so it had to fold. Since then, Russel has been an independent consultant, analyst, trainer, and expert witness -- programming in Python, Java SE, Java ME, and Groovy; creating builds using SCons, Waf, Gradle, Gant, Maven, and Ant; and controlling your versions with Bazaar, Mercurial, Git, and Subversion -- and an author, "Developing Java Software" third edition, and "Python for Rookies".

The Multicore Processors that has crept up over the last five years means that parallelism has finally arrived (after 30+ years of being the next coming technology), so Russel has been able to return to being interested in all things concurrent and parallel in software systems. Russel is centrally involved with the development of the Groovy programming language and the GPars concurrency and parallelism framework, is centrally involved in Python-CSP and PyCSP which is bringing CSP to the world of Python, is author of the Gant Ant task scripting framework (which is a core component of Grails), and contributes to the Gradle and SCons build frameworks.

Edinburgh Branch site maintained by © Copyright BCS 2010 Legal and privacy notices  BCS is a registered charity: No 292786