12 February 2009 | Team Tamar

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.

Why F#

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:Asp_net

  • 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.

Additional Reading

Microsoft F# Developer Center
Learn F#
Don Syme's WebLog

Team Tamar