Joe Pamer, compiler developer for the F# programming language. F# is a “hybrid” programming language, built with functional programming in mind, but also programmable in a more imperative object-oriented way. Much of it is compatible with the OCaml programming language, there are some C# ideas in there as well, and it’s one of the languages baked right into Visual Studio 2010.
In this conversation, Rich and Joe talk about their ideas on programming language design and evolution, functional programming, concurrency, how F# fits into Visual Studio and the granddaddy of them all, Lisp.
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: