I’ve worked with many languages, from BASIC to assembly code. One of the last check-ins I made when implementing generics for .NET, C# and VB had a lot of x86 assembly code. My first job was in Prolog. I think programmers should learn languages at all extremes.
Functional languages attract me because of their simplicity even when solving complex tasks. If you look through the code samples in a book such as F# for Scientists they are breathtaking in their elegance, given what they achieve. A good functional program is like a beautiful poem: you see the pieces of a ‘solution’ come together.
Of course, not all programs end up so beautiful. It’s very important that we tackle ‘programming in the large’ as well. That’s what the object-oriented features of F# are for.
Why did Microsoft decide to undertake the development of F# and how does F# fit into Microsoft’s overall strategy and philosophy?
Microsoft’s decision to invest in further F# research is very much based on the fact that F# adds huge value to the .NET platform. F# really enables the .NET platform to reach out to new classes of developers, and appeal to domains where .NET is not heavily used. This is especially true in data exploration and technical computing. We’re also exploiting functional techniques in parallel programming.
What is the most interesting program you’ve seen written in F#?
That’s a good question! I’ll give several answers. I’ve mentioned the samples from F# for Scientists, which are very compelling. But for sheer F# elegance, I like Dustin Campbell’s series of Project Euler solutions.
However, some of the most intriguing to me are the ones that integrate F# into existing data-oriented tools such as AutoCAD and ArcGIS. These domains are, in theory, well suited to functional programming, but no functional language has ever interoperated with these tools before. Through the magic of .NET interoperability, you can now use F# with the .NET APIs for these tools, which opens up many possibilities.
Why do you think a programmer would choose to write apps in F# rather than C#?
Many programmers choose to explore a problem in F# because it lets them focus more on the problem domain and less on programming itself. That’s a big benefit in some of the data exploration, algorithmic and technical computing domains, and so we’ve seen a lot of interest in using F# here, where C# may not have been an obvious choice.