I was reminded of how far we've come in hardware, relative to our ability to exploit the immense processing power that's available, when a press release surfaced the other day from Intel and Blade Network Technologies. The two are teaming to "change the way parallel programming is taught in U.S. High Schools." (I know, you're thinking that the first order of business should be the change the way regular programming is taught.)
It's a noble effort, for all the effect it'll have on kids who don't have enough real-world experience to know what they don't know. Plus, I'm in favor of anything which teaches newbies that there's a corpus of computer science knowledge and process to programming, as opposed to the bastardized approach that's developed, mostly on the consumer side, over the past quarter century.
Of course, it's easy to carp. Yet one must remember there's a reason that short cuts, workarounds, and the just plain inability to exploit the headroom of hyperthreaded hardware is commonplace. It's because parallel programming is touch stuff. The intellectual underpinnings for how to properly decompose apps haven't advanced all the much in a long time.
Those of us with long memories look back to the period from the mid-1980s through the early '90s as a golden age when it seemed like the challenge of parallelism would be met. That was the era where, on the hardware side, dozens of personal supercomputer makers flowered (and then were acquired, or sank). To give those Thinking Machines and NCubes something to do, parallel programming languages like Sisal came into vogue. (Interestingly, Sisal, which had its code frozen in 1996, is actually still available, via SourceForge.)