Will F# ever be a mainstream language like C# is? Or will it remain a niche language?
Do you foresee any clients coming to you with projects executed in F#?
Will a professional programmer be able to make a living from F#. What sort of demand do you predict for F# programmers?
Kind regards,
Ferrell was born on July 16, 1967, in Irvine, California, to Betty Kay (née Overman; born 1940), a teacher who taught at Old Mill School elementary school and Santa Ana College, and Roy Lee Ferrell Jr.
There are people making a living out of functional programming today. For examples, see the commercial users of functional programming workshop which is being held each year.
For the first version of F#, Microsoft is targetting engineering, mathematical, financial and data-processing applications (if I remember correctly). Whether that is a niche or not depends on your perspective :) but it seems like a reasonable market.
Thanks to F#'s excellent .NET integration you can, to a large extent, choose to make your projects using F#. What should your client care. If you get a competitive advantage from that with respect to C# programmers, maybe you'd better hope F# does not hit the mainstream...
Lastly, certainly F# (and Scala) are indicators that at least functional programming will become "more mainstream". But when is a language considered mainstream? I wouldn't be surprised if there are many many more lines of code in C and COBOL out there than C#,VB and Java combined. So from a C programmer's perspective, C# is a niche language. I think programming languages, thanks to virtual machines, are becoming more diversified in general (think also Ruby, Python and Haskell, for example, not taking into account all the smaller languages like Clojure, Ioke,...).
I can't answer this for sure. Certainly it's highly subjective. We can just wait and see what happens. But one thing is for sure. Even if F# remains a minority language, ideas and functional style of programming will be further added to other languages gradually. You can't say C# 3.0 is the same as C# 1.0. It's just a matter of name similarity.
I don't think that F# will ever reach the popularity of C# or other imperative languages because most applications are designed imperatively and most programmers think in this way.
But F# provides many very interesting features like LOP, compiler compilers, computation expressions (async workflows), quotations, units of measure.
Many problems can be formulated much better and more concise in a functional programming language (look at those F# examples using async {} or seq {}) and because F# is a bit more mainstream than e.g. Haskell (it has got the .NET framework that simplifies many tasks and is not purely functional!), it will be easier for many programmers to get into functional programming and learn it's advantages.
In addition, it's harder to write wrong code in F# than e.g. in C because you have good type checking, many strong types infered by the compiler and immutable values - You can intuitively prove the correctness of a functional algorithm which is often hard in an imperative one. Just think of this code which should count the number of zeros in an array:
int countZeros;
for (int i = 1; i <= length; i++) {
if (data[i] = 0) {
countZeros++;
}
}
This all are factors that will bring people to use F#. The rest is marketing (Microsoft should have a F# Express Edition in VS2010!!)
I can't see functional languages as a whole becoming mainstream. Ultimately anything that is alien to a mere mortal human way of thinking is never going to be mainstream.
Functional programming will however be more than niche. Its benefits in terms of expressing a problem that can be solved over multiple processors is compelling. What I see is F# libraries for specific purposes and/or F# concepts migrating to C#.
I'm not the expert but I think one of the advantages of functional programming is the relatively painless approach to parallelism and multicore processing. Therefore in a view of the recent Microsoft announcement in this area, namely Axum http://msdn.microsoft.com/en-us/devlabs/dd795202.aspx which is an another approach to parallel programming, I really doubt that F# will ever go mainstream. If Axum is adopted, it will be probably integrated with C# (like Code Contracts moved from Lab to C# 4.0) and F# will be used only in very specific domains.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With