views:

421

answers:

5

Being a C# developer since version 1.0, F# has captured my free time for the past few weeks. Computers are now sold with 2, 4 .. Cores and multi-threading is not always simple to accomplish.

At the moment I see that F# has great potential for complicated and or heavy workloads. Do you think that F# will (once RTM) become an important player in the Enterprise Software market?

+2  A: 

I think regardless of whether F# becomes import for Enterprise Software being able to isolate pure functional portions of code in any language will be key to using the potential of multi-core computers. For instance Microsoft's Parallel Extensions for .NET are great, but there is still a lot of room to make mistakes by parallelizing code that can't execute in parallel. If the code is in the form of a pure functional language or a subset of your language that is purely functional, then you are assured that you can execute it in parallel. The trick is then figuring out the most efficient way to assign the work.

The role that F# plays in this I would say would be more as a catalyst to get people's feet wet and start thinking in a more declarative way.

fryguybob
The Immutable characteristics definitely make things great for parallel execution.I must admit its taking me some getting used to though.
Alexandre Brisebois
Yes, it definitely takes getting used to, but at the same time it can be quite freeing to be able to solve a problem by describing the problem itself rather than then describing the steps you would take to solve the problem.
fryguybob
+3  A: 

I think F# has great opportunity to make inroads some of the niche areas of enterprise applications such as mathematical modelling (e.g. for banking/trading applications). Removing side effects from functions also leads to great opportunities for parallelism and memoization. Its hard to say if these languages will ever take off for mainstream development is hard to say, but in my opinion the problems are more likely to be human oriented (i.e. lack of skills and high learning curve for people familiar with more typical languages like c#/java/c++) rather than technical.

Chris
+1  A: 

What I think we'll be seeing is that some functional stuff will migrate into C# such as the increase use of immutable types and the marking functions as pure etc. I can't see F# having a wider role in enterprise development its just too mystifying to the average developer.

AnthonyWJones
I agree that only interested developers will dare to venture in F#, it's not the simplest task to pickup when all you've been doing is OOP
Alexandre Brisebois
A: 

I think F# will always be a niche language, compared to VB/C#/Java, because it does require more of a mathematical or computer science background. However the very fact that it is a CLR language means that it will have much bigger exposure than earlier functional languages.

I work in an investment bank and we are already using F# for some ad-hoc scripting purposes, we are pretty keen to see a released version of F# so that we can consider more formal integration into our systems (although they are likely to remain fundamentally C# based).

Chris Ballard
I do think that C# will remain the principal language and that F# will be used to solve the harder problems or the more work intensive problems. could you share some interesting resources from your experience with F# ?
Alexandre Brisebois
I'd disagree that it requires a math/cs background. It requires the _capacity_ to understand such things. But then again, that's probably enough to limit it to "niche".
MichaelGG
+1  A: 

C#/VB will always be the main languages, but F# is better at complex problems. C# is more general purpose while F# is better at IA, statistics, science (finding the cure of cancer, for example), etc. F# will never replace C#, but it will enable .NET to compete in more fields of computer science. As for data mining and processing large ammounts of data, you are better off developping directly within the database - like SQL Server or oracle.

As for F# being hard to learn, it's only because we got "corrupted" by the imperative way of thinking in most other languages. It's hard to unlearn something you do for 5 years! Also, in my exprience, ocaml and F# is a joy to use. The only complain I have for F#/Ocaml is that most of the time people overuse the type inference which makes the code unreadable. I'd rather declare variable types to make it easier to maintain.

Pascal