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
This is a purely technical blog concerning topics such as Python, Ruby, Scala, Go, JavaScript, Linux, open source software, the Web, and lesser-known programming languages.
Ad maiorem Dei gloriam inque hominum salutem.