Haskell: A Good Bet for the Future
Everyone is pushing concurrency these days. Recently functional programming has re-emerged into the spotlight because the paradigm is particularly conducive to parallel programming. Three languages that have been getting a special amount of attention are Haskell, Erlang, and Clojure (and all three with good reason!).
Microsoft will be releasing a major concurrency framework called Parallel Extensions along with .NET 4.0, which will include parallel LINQ (PLINQ) and the parallel tasks (AKA futures) library. As usual, they're well behind the curve, but at least when Microsoft gets into something, a lot of corporate programmers will start taking the technology seriously.
My problem recently has been picking one technology to focus on learning. Naturally, a large part of my time will go towards learning the new .NET 4.0 concurrency, but as a language for personal use, Haskell has won my attention. Instead of offering an amateur explanation of its advantages over other languages, I'm just going to link to some of the particularly interesting articles I've read on it recently:
- No monadic headaches: multi-core concurrency is easy in Haskell — article on how Haskell's concurrency can act as a direct replacement for Erlang's (but with much nicer syntax), using message passing channels
- Multicore Programming in Haskell Now! — summary of Haskell's wide range of parallel programming models
- Supercompilation for Haskell (PDF warning) — how to compile Haskell to rival C's speed
- Haskell Arrays, Accelerated Using GPUs — executing massively parallel operations on the GPU from Haskell