[ Note, if you want to use the free download of F# 2.0, you should use the August 2010 release of the F# 2.0 free download MSI and ZIP. This release extends the existing availability of free-for-use F# programming tools to .NET 4.0. ]
Today sees the launch of Visual Studio 2010, at five launch events around the world, as announced by Bob Muglia, Jason Zander and S. Somasegar, and presented live today in Las Vegas. Visual Studio 2010 includes the official version 2.0 of the F# language. As is our custom on the F# team, we also release a matching MSI and ZIP of F# 2.0 (for use with Visual Studio 2008 and as a standalone compiler on a range of platforms)
Today represents the culmination of 7 years of work on the language at Microsoft Research, and, more recently, the Microsoft Developer Division. I am immensely proud of what we’ve achieved. F# brings a productive functional and object-oriented programming language to .NET, extending the platform to new audiences in technical, algorithmic, data-rich, parallel and explorative domains, and its inclusion in Visual Studio 2010 represents a huge milestone for the language.
To help understand what we’re doing with F#, I’ve listed some of the common questions people have about the language below. We thank everyone who has been involved in the production of F#, especially the many users who have given us feedback on the language!
Q: What is F#?
F# is a productive functional and object-oriented programming language for .NET that enables users to write simple code to solve complex problems. Its succinct syntax and powerful type inference lets users stay closer to the domain they are working in, and the integration into .NET and Visual Studio gives rich access to the expansive .NET platform.
F# has strong support for parallelism and concurrency, through its support for immutability and asynchronous programming, and tools such as the F# Interactive enable exploring data interactively, analyzing, visualizing and testing against live data sources. The development process then scales directly up to full .NET component development, without having to re-write code.
Q: What is F# designed for?
F# extends the .NET platform by offering a productive language for developers working in technical, algorithmic, parallel and data-rich areas. This has included applications in domains such as financial services, data analytics, games, sciences and machine learning. But F# is also a general purpose .NET programming language, and the combination of language strengths makes F# valuable in a broad range of development applications.
Q: What were your big objectives when designing F#?
F#’s primary design goal has been to combine the simple expressivity of functional programming with the scalability of .NET and object-oriented programming.
Q: What is functional programming?
Functional programming languages express ideas at a higher level and allow users to focus on the challenge of problem solving instead of the process of writing code. A programming language like F# provides a ‘tool bag’ of functions that users can pick from to solve their problem. Functional programming includes concepts such as immutability to reduce dependencies between components, generics to express solutions that work over many different kinds of data, and functions as values to make it easy to abstract units of a solution into reusable pieces.
Q: What are the primary benefits of functional programming?
Because it abstracts functionality from coding, F# lets programmers 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. By raising the level of abstraction of how problems are solved, solutions tend to be simpler, more general, easier to test and more parallelizable.