Concurrency: the Next Big Thing in CS

The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software [lambda].

Even if this article happens to not be on the money (only time will tell, and figure 1 looks dodgy if you ask me), it’s got lots of interesting things to say about hardware. The “space is speed” anecdote about the compiler is particularly cool and bears waffling about in a lecture some time.

We desperately need a higher-level programming model for concurrency than languages offer today.

Over the last year or so I’ve had a growing feeling that this might be the case. Not because of hardware, but because of my teaching and research experiences. On one hand I’ve been teaching Java, and realised that while multi-thread programming is easier than ever in mainstream languages (basically thanks to Java and C#’s built-in support for monitors), it’s still pretty clunky, and harder than is truly useful, because ultimately these languages still come from the sequential world. On the other hand, I’ve seen that plenty of people in the CS community have put a lot of thought into concurrency over the last 30 years, and it’s a field which isn’t running out of problems to be solved/ideas to be had. On the contrary, it seems we’re only now starting to get to grips with it. I’m not talking about our understanding of mechanisms such as threads, semaphores, and the aforementioned monitors, but rather the nuttier mathematical details of “what happens if…”, when multiple processes communicate. For example and in particular, process algebra… Now, this is a world I wasn’t aware of before I returned to academia, but it seems it’s starting to permeate into “the real world” – see the article above.

And then, mainly through reading lambda, I’ve learnt of the existence of languages (e.g. Erlang, Oz) where it’s is a (the) central concept. Admittedly, these languages look rather strange to my imperative eyes, but maybe this is the kind of thing we’ll be teaching in the years to come, which should add another interesting dimension to the perennial “discussions” on which language to teach first. Can’t wait. :-)