We observed in Chapter 1, Performance by Design, that parallelism is a function of the hardware, whereas concurrency is a function of the software assisted by hardware support. Except for algorithms that are purely sequential by nature, concurrency is the favored means to facilitate parallelism and achieve better performance. Immutable and stateless data is a catalyst to concurrency as there is no contention between threads due to the absence of mutable data.
In 1965, Intel's co-founder Gordon Moore made an observation that the number of transistors per square inch on integrated circuits doubles every 24 months. He also predicted that the trend would continue for 10 years, but in practice, it has continued till now, marking almost half a century. More transistors resulted in more computing power. With a larger number of transistors in the same area, we need higher clock speed to transmit signals to all of the transistors. Secondly, transistors...