Microsoft’s new F#, does it strike a chord?
When I first heard about F# (pronounced F sharp) – a new programming language from Microsoft, I thought it was going to be "yet another deviation" of a well known programming language. Somehow I think a lot of people will be surprised.
F# developed as a research programming language to provide the much sought-after combination of type safety, succinctness, performance, expressibility and scripting, with all the advantages of running on a high-quality, well-supported modern runtime system. This combination has been so successful that the language is now being transitioned towards a fully supported language on the .NET platform. Some of the reasons for this move are that F# gives you:
- succinct, type-inferred functional programming,
- interactive scripting like Python and other languages,
- the foundations for an interactive data visualization environment,
- the combination of type inference and safety, like that of ML,
- a cross-compiling core shared with the popular OCaml language,
- a performance profile like that of C#,
- easy access to the entire range of powerful .NET libraries and database tools,
- a foundational simplicity with similar roots to Scheme,
- the option of a top-rate Visual Studio integration, which is usable with the freely available Visual Studio 2008 Shell
- the experience of a first-class team of language researchers with a track record of delivering high-quality implementations,
- the speed of native code execution on the concurrent, portable, and distributed .NET Framework.
The F# "Language"
The only language to provide a combination like this is F# – a scripted/functional/imperative/object-oriented programming language that is a fantastic basis for many practical programming tasks.
F# was developed as a pragmatically-oriented variant of ML that shares a core language with OCaml. Unlike other scripting languages it executes at or near the speed of C# and C++, making use of the performance that comes through strong typing. Unlike many type-inferred, statically-typed languages it also supports many dynamic language techniques, such as property discovery and reflection where needed. F# includes extensions for working across languages and for object-oriented programming, and it works seamlessly with other .NET programming languages and tools.