In “The Free Lunch is Over,” Herb Sutter explains how hardware changes will dictate software changes which, in turn, will change the way we write software and how we think about programming languages in a more general sense.
To really get a feel for the rising significance of concurrency, you need to understand the CPU conundrum. Sutter explains the situation with aplomb in “The Free Lunch is Over: A Fundamental Turn Toward Concurrency in Software”. The article was originally published in 2004, and then appeared in Dr. Dobb’s Journal in 2005. The information remains a relevant as ever, however, and the embedded chart was updated in 2009 to reflect on-going changes.
Essentially, up until a decade or so ago, it was a given that CPUs would continue to get faster and faster as the years went by and technology improved. By simply upgrading your CPU, programs would run better and faster, simply because you had better hardware.
But now, CPU performance is no longer on the rise. There continue to be more and more transistors, yet clock speed remains stagnant. What does this mean?
For one, to be able to fully exploit CPU improvements from here on out, programs will need, more and more, to be concurrent. It’s no longer enough to rely solely on CPU muscle. And guess what? Erlang was built to make use of hardware concurrency.
Learning Erlang, then, is truly an investment. In knowing Erlang, you ensure that you will be able to take advantage of technological improvements to come, that you will be able to build concurrent programs as it becomes increasingly important – nay, necessary – that they do, in fact, run concurrently.