Don Syme on F#, Microsoft’s functional programming language for .NET

Don Syme is a Principal Researcher at Microsoft Research, Cambridge and the designer of F#, Microsoft’s functional language for .NET. Visual Studio 2010 includes F# alongside C# and Visual Basic, making it widely available to Microsoft platform developers.

I met Syme at the QCon conference in London, in March 2010, and interviewed him shortly afterwards. Some quotes from that interviewed have already been published in an article for The Register, but I am now posting nearly all of it here.

image

What was the genesis of F#?

I’ve been doing functional programming since 1992, ML-family functional programming. I got exposed to ML programming through my supervisor at the Australian National University, one of the people who worked on the first version of ML with Robin Milner, the father of the ML series of languages.

So during the 90s I had a lot of experience the sheer effectiveness of the languages. I was doing mainly symbolic programming. Then I had the good fortune to arrive at Microsoft when the .NET platform was in its early genesis. I’d had a lot of experience with the Java language and contributed to the design of C# and C# 2.0.

There are two streams to programming language design, implementation and research. One is to take existing languages like C#, and to modify them and extend them with the kind of features that we think are productive for programmers, that we think are beautiful and elegant in their combination of the mathematics that lies behind them and the power that gives you as a programmer. So we did that in .NET 2.0, with .NET generics and C#.

But the other thing in the work is to take programming languages that exemplify some other paradigm, such as a logic paradigm, or a perhaps a data-parallel programming paradigm, and push that through as a practical and viable tool. F# started as a domain-functional programming tool that I had been using, wanting to see that paradigm being strong on the .NET platform.

We started F# as a research project, with many possible outcomes in mind. Those outcomes might have been as simple as making a tool which we would be comfortable using for our own personal work, through to having a research-quality language implementation similar to the other functional language implementations. But one of the great  things about the early days of F# was taking the functional paradigm, having it in the context of .NET, and then engaging with real-world programming tasks, be those simple tasks that a tester might perform in writing test scripting, through to working with some of the financial institutions, and understanding the kind of work they did.

We opened up this ability to have a language implementation, a functional language implementation, and trial it very easily in real-world situations. We could experiment with the functional paradigm in practice, and understand where it was most beneficial, how it would fit in and what it should and shouldn’t be used for.

From 2003 to 2006 it was very hands on, to get the earlier versions of the language out there. They were a bit scrappy in some ways, but we really got engaged with actual users doing interesting applied programming tasks. That took us through to 2006 and the development of the language.

How would you describe your own involvement?

We’re now a team of about 12. That grew from me alone in 2002/3. In 2005 I was joined by James Margetson who worked full time with me on the research versions of F#; and then in 2007 we broadened out to a much larger team for the productisation.

Why was F# integrated into Visual Studio ahead of say Ruby or Python?

[pause] It may not come down to the technical questions. I’ve never considered that comparison point before.

Page 1 of 6 | Next page