I came across an interesting paper posted to Digg regarding parallel computing. The author encourages developers to abandon using threads and to shift their efforts to true parallel computing. All in all it's a good article, but, for the most part, it was all said about 60 years ago by John Von Neumann.
It's a shame that most people don't know much about John Von Neumann. Even the Wikipedia page about him is somewhat lacking in detail regarding his incredible contributions to our modern world. I wouldn't hesitate to say that John Von Neumann had a greater impact on our world than almost any other person in the past 100 years.
John Von Neumann is responsible for virtually all modern day computer architecture. His paper, with the exciting title of "First Draft of a Report on the EDVAC", which he wrote while working on the then top-secret ENIAC project, is still a very accurate description of basically all computers in use today.
But this man's brilliance isn't in that he invented the machines on which our world is built, but that he considered his invention to be primitive, almost ugly, and that he envisioned a far more advanced form of computer that would make today's most powerful machines look much like the ENIAC does when compared to the machine I'm writing this on. His ideas on the future of computer architecture have yet to be fully realized, but the work being done on parallel computing is as close as we've come.
Almost all of today's computers are, for the most part, serial in nature. They do one thing at a time. To simulate the appearance of "multi-tasking", or doing more than one thing at a time, they very quickly switch between tasks. In fact, one of the primary jobs of an operating system (like Windows, Linux, or Mac OS) is to take charge of this task switching to make the computer as responsive as possible.
A lot of the "advances" in computer speed over the past few decades have been in getting the CPU to kinda do multiple things at the same time. Whether that's through multiple CPUs, multiple cores, or multiple simultaneous threads, the reason we're jumping through these hoops is because our computers are serial.
One example of a parallel computer in use today is the graphics processing unit (GPU) on some of the newer 3D video cards. The GPU is a fairly primitive parallel computer, but its parallelism is what gives it the ability to produce those great graphics we all love so much. Alas, its specialized nature makes it a poor substitute for the generalized parallel computer that John thought up 60 years ago. There has been some interesting work in trying to adapt GPUs to make them usable for more than just graphics, but they have a long way to go.
John Von Neumann's talents were not limited to computing. He made great contributions to economics, quantum mechanics, and even military weapons research. If only he had lived a few more years (he died tragically at the age of 54 due to cancer he likely contracted as a result of the atomic bomb tests he witnessed) we would probably be decades ahead of where we are today. In fact, I'm not sure why he isn't on my list of personal heroes. I think I'll add him.