Microsoft's F# Language: Number 12 With a Bullet

By Darryl K. Taft  |  Posted 2014-03-10 Print this article Print

Syme described functional-first programming as “a general-purpose programming technique represented by languages such as Clojure, Scala, Haskell, F#, OCaml and is particularly suited to analytical programming tasks such as calculation engines, data-science programming, ETL pipelines and general data-manipulation. While these problems can be solved using other programming paradigms, they are particularly amenable to functional-first programming. Functional-first programming uses functional programming as the initial paradigm for most purposes, but employs other techniques such as object-oriented programming and state manipulation as necessary.”

Meanwhile, developers in various industries are looking to F# to build apps for everything from financial systems to gaming.

“F# is becoming an increasingly important part of our server side infrastructure that supports our mobile and Web-based social games with millions of active users,” said a lead server engineer and developer at Gamesys in an interview on the .NET Rocks! podcast. “F# first came to prominence in our technology stack in the implementation of the rules engine for our social slots games which by now serve over 700,000 unique players and 150,000,000 requests per day at peaks of several thousand requests per second. The F# solution offers us an order of magnitude increase in productivity and allows one developer to perform the work that is performed by a team of dedicated developers on an existing Java-based solution, and is critical in supporting our agile approach and bi-weekly release cycles.”

Patrice Simard, a distinguished engineer at Microsoft, also spoke of his experience with F#.

“For a machine learning scientist, speed of experimentation is the critical factor to optimize,” Simard said in a testimonial on the F# Foundation Website. “Compiling is fast but loading large amounts of data in memory takes a long time. With F#’s REPL, you only need to load the data once and you can then code and explore in the interactive environment. Unlike C# and C++, F# was designed for this mode of interaction. It has the ease of use of Matlab or Python, both of which I have used extensively in the past. One problem with Matlab and Python is that they are not strongly typed. No compile-time type checking hurts speed of experimentation because of bugs, lack of reusability, high cost of refactoring, no IntelliSense, and slow execution. Switching to F# was liberating and exhilarating.”

And in responding to a query about F# on Stack Overflow, Simon Cousins, an F# software developer in the UK, said, “I have written an application to balance the national power generation schedule for a portfolio of power stations to a trading position for an energy company. The client and server components were in C# but the calculation engine was written in F#. The use of F# to address the complexity at the heart of this application clearly demonstrates a sweet spot for the language within enterprise software, namely algorithmically complex analysis of large data sets. My experience has been a very positive one.”


Submit a Comment

Loading Comments...
Manage your Newsletters: Login   Register My Newsletters

Rocket Fuel