I've just read two articles that made me think deeply about parallel computing / programming. One is Herb Sutter's (a known C++ expert) about "the end of free lunch". Sutter talks about the performance peak currently hit on by Intel/AMD and how programmers will have to learn to write multithreaded code to unitize the processors of the next generation. He's right in many things - the processor's clock speeds are very difficult to advance further as physical limits are hit. The only real improvements are in caches, and parallelization - Hyperthreading, dual-core Opterons - these are the current threads in the chip making industry.

The other is an overview of the forthcoming Cell processor from STI (Sony Toshiba IBM) - a super-parallel beast working 5 times as fast as the speediest x86 processor of today, specifically designed to be interconnected in massively parallel configurations. The only problem is: software. Programs need to be written in a parallel mindset that takes advantage of all this raw power. Just think of what supercomputers IBM will build with these Cells for genetic research.

It looks like parallel programming is going to be one of the hottest topics in the near future. An not only programming - creating tools that parallelize serial programs, analysing algorithms to find ways to make them parallel - these look like the next "current theme" in the world of programming.