Thinking Outside the Box:
The Upcoming Software Revolution is Concurrency
In a pre-release of his article “The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software” Herb Sutter announces a new software revolution, leading to interesting consequences for the future work of software developers. Thereby, the theme “concurrency” plays the main role. Actually some current development trends would become inverted, says Herb. But is he right?
Herb Sutter is well-known as a leading software architect at Microsoft, chair of the ISO C++ standards committee and book author. In his new article he focuses on concurrency as the main topic of software development in the near future. This results from the newest development trends in the hardware sector, which lead to dramatic consequences concerning the way to develop software. Herb presents an in-depth comparison to the OO revolution of the past 20 to 30 years. As well as concurrency, other themes would also gain more attention, even those (almost) nobody would expect to become important.
"The vast majority of programmers today don’t grok concurrency, just as the vast majority of programmers 15 years ago didn’t yet grok objects."
(H. Sutter, in the article “The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software”)
For decades the performance of software improved, based on hardware performance gains, mostly without appropriate modifications of the software itself, states Herb. Performance tuning was a matter of some very special areas only, while in most cases faster hardware was available more quickly and at a lower price than faster algorithms. This time, marked by Herb as the “Free Lunch”, is now over.
The current status of hardware development is the starting point of his reasoning. Its exponential progression has reached limits in some areas, e.g. there is no 10GHz processor available at the moment, not even one with 4 GHz. Intel withdrew an appropriate announcement for 2005. Also the optimization of operation execution per processor cycle has reached limits, which could be crossed at the expense of a consistent execution sequence only. In contrast, other development trends like the enlargement of cache sizes are still going on.
Two new, promising development trends are multiprocessor and multicore systems. Advantage from these improvements can be taken by concurrency only, especially in terms of multithreading. Thereby, appropriate compiler options, coupled with optimizations, are not sufficient. Instead of that, a higher programming model than those of current programming languages is necessary, while programming efforts will increase. In addition, the performance theme will achieve its old importance again in the long term.
The hardware development directions outlined in the article are beyond dispute. In fact, clock cycles cannot be increased endlessly – and there is a certain trend towards multicore systems, combining several CPUs on one processor chip. However, Herb’s argumentation has weaknesses: He presents hardware development trends, which lead to (automatic) performance gains, e.g. the enlargement of processor caches. It is quite difficult to appreciate, if this exponential trend could compensate the absence of higher clock cycles? Given this background, it is doubtful if e.g. memory performance will have the same importance as in former decades. Furthermore Herb makes the case that it will be the task of developers to make applications ready for multithreading. He does not outline this topic in detail. By all means it is conceivable that appropriate reengineering tools or compilers will detect potential deadlocks and sections that are to be synchronized automatically – freeing the programmer from this burden. We agree with the appreciation, that the theme “concurrency” as a whole will gain importance – if it is resolved by tools (generators?) and/or by hand now. However, make your opinion on your own.
The article announced for Dr. Dobbs Journal and C/C++ User's Journal is available as a pre-released version at
http://www.gotw.ca/publications/concurrency-ddj.htm


