11. Other languages require an extension, add-on or library to support concurrent programming . 12. This makes concurrent programming very easy. 13. Thus there arose the problem of how to provide modular denotational semantics for concurrent programming languages. 14. In concurrent programming , synchronization is required when parallel threads attempt to access a shared resource. 15. In concurrent programming , the interpreter commits to a single possibility without trying the other ones. 16. As Brinch Hansen notes : Here Dijkstra lays the conceptual foundation for abstract concurrent programming . 17. In non-concurrent programming , this is less important, as the interpreter always tries all possibilities. 18. Dekker's algorithm is the first known correct solution to the mutual exclusion problem in concurrent programming . 19. The programming tools and techniques for dealing with parallel processes are collectively called " concurrent programming ". 20. The name thus lists the distinguishing features of the language, namely that it supports all three of these concurrent programming techniques.