(This post was imported from an earlier blog. It was first published in 2009.)
Recently, I came across a good article by Herb Sutter: The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software. While it was written some years ago, it is increasing in relevancy as the number of processors in our computers increases. If you develop software for a living, I recommend reading the article and considering the issues raised.
Here’s an excerpt:
[…] But if you want your application to benefit from the continued exponential throughput advances in new processors, it will need to be a well-written concurrent (usually multithreaded) application. And that’s easier said than done, because not all problems are inherently parallelizable and because concurrent programming is hard. […] (emphasis mine)
Herb also has fantastic books on C++. Herb authored one of my favorite hard-core software development books: Exceptional C++. The main take-away for me from Exceptional C++ was a good understanding and appreciation for how programs ought to behave in the presence of exceptions; i.e. “exception safety.” Even though I’ve been working with other languages recently (C#, ActionScript 3) I still find the concepts I learned from Herb’s book helpful in my development.
Herb has authored a couple of other books since, which I’ll definitely read if and when I get back to working with C++. (Yes, I do miss C++ from time to time!)