I was reading The Pragmatic Programmer this morning, and it got me to thinking about Haskell. Consider the following "function" for creating a piña colada: Open blender Open piña colada mix Put mix in blender Measure 1/2 cup white rum Pour in rum Add 2 cups of ice Close blender Liquefy for 2 minutes Open blender Get glasses Get pink umbrellas Serve It's very easy to understand and very linear. Now consider the following diagram that conveys which parts can be done concurrently: This description of the recipe is quite a bit more complex, but it's a lot more obvious which things can be done concurrently. There are a lot of approaches to concurrency. For years, we've relied on our CPUs to give us some implicit concurrency. The CPU can look at the code at a very micro level and figure out which assembly instructions can be done concurrently because they're working with different parts of memory, etc. Threads and processes also provid
Ad maiorem Dei gloriam inque hominum salutem.