Ron Pressler discusses and compares the various techniques of dealing with concurrency and IO in both pure functional (monads, affine types) and imperative programming languages (threads, continuations, monads, async/await), and shows why delimited continuations are a great fit for the imperative style.
lobsters score: 1 · tags: api, java, programming, transcript, video
To this day, this remains my favorite reference for an overview of retrofitting single-threaded IO-focused concurrency support on traditional programming languages (yet the approach that is ignored the most as people became keen on just copying variations of what NodeJS does). I don’t even allow Java get close to any of my projects, but this Java talk is the one I like the most on the topic.
The TL;DW is:
Don’t focus on coroutines as building block for then adding concurrency. Focus on concurrency from the start.
Use the native vocabulary that your language already offers for expressing control flow.
Concurrency support brings concurrency problems so the new vocabulary should be aimed at taming concurrency.
To this day, this remains my favorite reference for an overview of retrofitting single-threaded IO-focused concurrency support on traditional programming languages (yet the approach that is ignored the most as people became keen on just copying variations of what NodeJS does). I don’t even allow Java get close to any of my projects, but this Java talk is the one I like the most on the topic.
The TL;DW is:
Don’t focus on coroutines as building block for then adding concurrency. Focus on concurrency from the start.
Use the native vocabulary that your language already offers for expressing control flow.
Concurrency support brings concurrency problems so the new vocabulary should be aimed at taming concurrency.
score 1 · canonical