Why concurrency?
Before we answer the question why concurrency, we need to ask what is concurrency at all?
And the answer to the second question may be surprising for some who used to think that this is a synonym for parallel processing. But concurrency is not the same as parallelism. Concurrency is not a matter of application implementation but only a property of a program, algorithm, or problem. And parallelism is only one of the possible approaches to problems that are concurrent.
Leslie Lamport in his Time, Clocks, and the Ordering of Events in Distributed Systems paper from 1976, says:
"Two events are concurrent if neither can causally affect the other."
By extrapolating events to programs, algorithms, or problems, we can say that something is concurrent if it can be fully or partially decomposed into components (units) that are order-independent. Such units may be processed independently from each other, and the order of processing does not affect the final result. This means...