Parallelism/Concurrency, a key topic to consider
My first contribution to Dobbs Code Talk is to add a TAG for Parallel Programming (Parallelism/Concurrency). With multi-core processors in nearly all new computers, there are few topics which will have more impact on the essence of what it means to be a programmer in this next decade. So, I'm not talking about parallelism for just the High Performance Computing programmers - I'm talking about parallelism for all of us.
A couple years ago, I penned a note:
Think Parallel, or Perish
not so much as a warning to others, but as a note to myself that this was the lot we all face as software developers.
As things stand now I can't imagine anyone claiming to be a software developer a decade from now without be somewhat knowledgable about parallelism. In fact, inside a decade, I think that all programmers will claim to have written some concurrent programming one way or another.
I've seen a big shift in these past two years. At the end of 2005, dual-core was so new that very few programmers knew about the shift to ubiquitous parallelism which was starting. By the end of 2006, as everyone started to see dual-core as common , programmers almost universally told me that they weren't doing concurrency because it wasn't needed. Late in 2007, my team did a poll of developers who were not convinced in 2006 - and who still were not doing parallelism work. Only a quarter said it wasn't needed - the rest gave other excuses for not yet doing parallelism. The most common reason (about half) was that they couldn't squeeze the work into their schedule yet. Realtively few (under 15%) claimed that being too hard was the key reason for not yet adding parallelism to their application.
What does it mean? I think parallelism is on our minds - but not so urgent yet that we need to panic and rush to act. Many developers are adding parallelism now, in fact more than we expected... but it is still a minority of us who are writing parallel programs. But we are all starting to at least acknowledge it is in our future.
The early bird gets the worm.
It is a perfect time to experiment, learn - and help lead. It is an advantage available to us all - just like those who jumped into the internet craze early - and figured out it wasn't that hard. Those who jumped in early, helped lead.
I'll take the opportunity to share thoughts and discuss how we do this - on Dobb's Code Talk. 'nuff for now.
To paraphrase an Oldsmobile ad, "It's not your father's parallel programming."