The F# (pronounced "f sharp") object-oriented functional programming language originated at Microsoft Research around 2004. It was designed by Don Syme, principal researcher at the company. The language is geared to data-oriented programming as well as parallel programming and algorithmic development. F# 3.0, featuring support for large-scale schematized data and APIs, was released last year along with an update to Visual F# tools in Microsoft's Visual Studio 2012 IDE; Microsoft recently updated its Try F# website, which provides tools and resources for using F#, as well. InfoWorld Editor at Large Paul Krill recently spoke to Syme for perspectives on what Microsoft is trying to achieve with the language.
InfoWorld: What can developers do with F# that they can't already do with C#, C++, Visual Basic, or other programming languages available?
Syme: One primary difference is that F# is a functional-first language and in many ways a data-first programming language. The construction of the language is carefully designed to facilitate data-oriented problem-solving and manipulation in a functional programming way. One of the key aspects of functional programming is to reduce the bug rate for doing routine manipulations over data structures.
InfoWorld: What exactly is a functional language?
Syme: One of the primary characteristics is that data is represented in a way that is called immutable. What this means is that you have descriptions of data, such as a design, so perhaps you can imagine taking a picture, and the programming is more oriented around transforming what you have and producing a new picture as a result. Instagram, for example, or Excel is also a functional kind of system, where you take data and you specify how that data changes through the system. A functional programming language is one that takes that paradigm through [to] general purpose programming.
InfoWorld: What was the main impetus behind F#?
Syme: It reduces the time to deployment for analytical software components. You find that kind of programming, particularly in finance and insurance industries, but also in a wide range of scientific or data-oriented or data-intensive programming domains. Microsoft embraced F# and contributed to F# because we want a top-notch functional programming experience on our platforms. Microsoft contributes three things to F#: One is the Visual F# tools, which come with Visual Studio. Microsoft Research contributes the language design to F#, and we also contribute the Try F# site that has just been released this week.
InfoWorld: Is F# basically for parallel programming?
Syme: Yes. It's one of the things that F# is very good at, and it comes from this functional, stateless approach to programming.