One of the many nifty things in the Visual Studio 2010 box will be F#, the first new framework language since .NET originally launched. Microsoft has described F# as a bridge language. In one sense F# is as a bridge between the functional and object oriented worlds and in another a bridge between researchers in academia and the rest of us.
For some types of organizations, adopting F# will seem natural. When working with complex formula or coming from a more pure mathematical background, F# is a solid choice. Academic researchers who are comfortable with the .NET platform will welcome F#.
But what about the rest of us? What will adoption of F# look like?
One possibility is that F# will remain a strange bedfellow in the Visual Studio box.
If object oriented programming stays the dominant metaphor, .NET programmers will see little benefit in F# because C# itself is now itself a hybrid of functional and object oriented paradigms. The potential payoff for mastering an additional statically typed .NET language, functional or not, will be seen as less than compared to learning Python or Ruby. Given a choice many developers will choose to invest in a solid scripting language or even PowerShell over F#.
Also, it may be hard to convince management that F# is the right choice for a project. F# programmers will be scarce for the foreseeable future so there will be few skilled to maintain the code.
Another scenario though is that F# will fill the gap between those who create domain languages and associated tools and those who program with them. Under this scenario, predicated by a significant rise in domain specific languages (DSLs) ,F# will become a valuable tool for .NET developers to do language programming.
Most agree that domain experts aren’t going to become programmers no matter how well designed a language is. But a class of programmers could emerge that work almost exclusively with domain specific languages rather than general purpose languages. These programmers will be full fledged programmers in their own right but specialize in certain domains, have their own web communities surround their domains and their related DSLs, etc.
There’s a lot of competition in the DSL space, but it’s possible that F# is a strong candidate for manipulating, working with, researching, and interpreting DSLs. F# has a very rich set of tools for working with languages. If only it had an eval statement!
I really like F#. I actually have had a chance to work with it professionally and it’s very well done. And even as a general purpose programming language it’s entirely possible when we are all running those 128 core mammoths F# will be just what the IL needs.