"F# started in 2003 as a project to ensure that typed functional programming in the spirit of OCaml found a high-quality expression on the .NET Framework," Syme recalls. "These languages excel in tasks such as data transformations and parallel programming, as well as general-purpose programming. Over time, F# has incorporated elements from other languages, too, and carved out an independent identity as a mixed object/functional language on .NET. The journey to create F# let us engage with top language designers from around the world -- and with real programmers tackling hard problems."
Those programmers represent a number of industry verticals, which are finding the language helpful for algorithmic analysis of large quantities of business information. Whether it be financial-market analysis, retail, scientific applications, or business-information management, F# makes it easy for analysts to experiment with different data and algorithms to obtain additional quality.
"F# gets used for all sorts of things," Syme confirms. "We've seen a lot of interest and uptake from the financial community, where typed functional programming serves as a wonderful basis for data analytics and where questions of parallelism and efficient programming are very real. We've also seen fantastic applications in server-side data analysis, including in parts of the Bing ad delivery and analysis pipeline. F# seems a particularly good language for programmatic machine learning.
"F# scripting also makes F# ideal as a way to explore software components, develop algorithms, and investigate solutions to problems."
But don't get the idea that F# will be replacing C# as the predominant .NET language for professional developers. F# is complementary to .NET stalwarts C# and Visual Basic .NET, which remain integral to the majority of .NET projects. But C# and Visual Basic programmers can use F# components in their existing applications, enabling developers to maintain their current investments and integrate F# on a component-by-component basis.
Throughout the project that led to F# taking its place as a major .NET programming language, the goals have remained consistent: to combine the power and simplicity of functional programming with the tools, libraries, performance, and interoperability of .NET.
"This combination," Syme enthuses, "is a match made in heaven, giving a synthesis of programming style and platform. We want to revolutionize how people think about programming and equip programmers in domains such as technical computing with tools to solve their problems."