When did asynchronous programming originate? I’m no historian, but one contender for the earliest roots of async would be Melvin Conway‘s coroutines. His 1963 paper “Design of a Separable Transition-Diagram Compiler” introduces coroutines and notes that they “can greatly simplify the conception of a program when its modules do not communicate with each other synchronously.”
About 10 years afterward, Unix pipes arrived. In some sense, pipes were the first practical asynchronous programming model, albeit at the process level. Sure enough, Douglas McIlroy cites Conway’s paper as one source of inspiration for the idea.
Flash forward to the 21st century and everything old is new again. C# has iterator methods, Python has generators, Ruby has iterators, and so on, with many of these constructs forming the basic building blocks of an asynchronous programming model.
Thanks for the inspiration, Melvin!