Before we answer the question why concurrency, we need to ask, what is concurrency at all?
The answer to the latter question may be surprising for someone who used to think that it is a synonym for parallel processing. First and foremost, concurrency is not the same as parallelism. Concurrency is also not a matter of application implementation. It is a property of a program, algorithm, or problem where parallelism is just one of the possible approaches to the problems that are concurrent.
Leslie Lamport in his Time, Clocks, and the Ordering of Events in Distributed Systems paper from 1976, defines the concept of concurrency as follows:
By extrapolating events to programs, algorithms, or problems, we can say that something is concurrent if it can be fully or partially decomposed into...