functional programming

Perspectives on Clojure and F#

by Joey deVilla on August 10, 2010

Get Microsoft Silverlight

Don’t have Silverlight? You can download it here or download the video in MP4, MP3, WMA, WMV, WMV (High) and Zune formats.

Here’s a Channel 9 video shot at Emerging Languages Camp 2010, the first conference on up-and-coming programming languages held in Portland on July 21 – 22. It’s a casual conversation with:

  • Rich Hickey, creator of the Clojure (pronounced “closure”) programming language. It’s a dialect of Lisp intended general-purpose functional programming language with a lot of support for concurrent programming. If you caught our Ignite Your Coding webcast with Robert C. “Uncle Bob” Martin earlier this year, you heard his high praise for the language. Clojure targets both the JVM and CLR.
  • 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.

This article also appears in Canadian Developer Connection.


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.

Get Microsoft Silverlight

Can’t see the video? You can download and install Silverlight or download the video in iPod, MP3, WMA, WMV, WMV (High) or Zune formats.

Here’s the latest in Channel 9’s “Expert to Expert” series of videos – a “whiteboard jam” between two big brains:

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:

(Perhaps I should buttonhole Reg “Raganwald” Braithwaite into providing us with a nice beginner’s explanation of monads. Would you folks like that?)

This article also appears in Canadian Developer Connection.