And now, a left turn into Theoryland! Don’t worry, it’s good for your brain, and might even change the way you look at your day-to-day programming.
Here’s the latest in Channel 9’s “Expert to Expert” series of videos – a “whiteboard jam” between two big brains:
- Greg Meredith, mathematician and computer scientist
- Brian Beckman, astrophysicist and software architect (sounds like one of those “architecture astronauts” that Joel Spolsky liked to rant about!)
Here’s the abstract for the video:
The idea for the format of this conversation is simple: put two geniuses together, give them each a whiteboard and some markers, and see what happens. It's much like free jazz: expert improvisation, seriously geeked-out whiteboard jamming.
The content theme for this episode -- Monads as coordinate systems--is not simple. To grok this, we need to think in three dimensions: programming, physics and mathematics. But don't worry. Brian and Greg do not expect to be jamming in front of only fellow experts. This is Channel 9, after all, and there are many different levels of knowledge out there amongst our Niner population. Accordingly, you will not feel as though you're watching something in a language you don't speak. That said, you should possess interests in the theoretical, in mathematics, and in physics, and an overall appreciation for learning new things.
Monads are often used in functional programming – they’re structures that describe a flow of control and data (ff you’re a SharePoint person or have developed using WF, you might want to think of them as distant cousins of workflows). As the practical upshot of Moore’s Law has shifted from “doubling in speed about every couple of years” to “doubling in cores about every couple of years” and shows no sign of shifting back, functional programming and what it offers to parallel programming are becoming increasingly important. So don’t pass by this video thinking that it’ll never apply to you – there’s a chance it might.
Explanations of monads for non-functional programmers include:
- Overloading Semicolon – or, Monads from 10,000 Feet
- jQuery is a Monad
- Haskell for C# Programmers, Part 3: Visualizing Monads
- The Worst Monad Tutorial…Except for All Those Others
(Perhaps I should buttonhole Reg “Raganwald” Braithwaite into providing us with a nice beginner’s explanation of monads. Would you folks like that?)