tags:

views:

872

answers:

6

Should I invest time learning Microsoft's new F# language? I am mainly a C# .NET developer and I wonder if learning F# will be of any help in developing today's typical applications.

+5  A: 

It's worthwhile to take a look at programming languages that make you think differently, and if you're a C# developer, F# is probably the functional programming language you'd find most accessible.

Even if you decide that you don't want to develop applications in F#, the experience of using F# could change the way you write C#.

John D. Cook
+2  A: 

You said, "should I learn functional programming languages in general?"

If you want to understand programming on a deeper level I say you should. Learning LISP was an eye-opening adventure for me. It was very hard at first. And then one day as if by magic it was natural to me. That can only be better for your ability to see problems in different ways.

Alex Baranosky
+2  A: 

Check out the responses in What would be a good second lanuguage to learn for a C# programmer. The bottom line is: functional languages offer a complete new paradigm and will be of value to you as it will enhance your programming skills.

Ruben Steins
+2  A: 

I learned Prolog a long time ago and it's remained my favorite language in many regards. Now Prolog is not just a functional language but an AI language, however some time ago I learned Erlang which is based on Prolog. I can recommend you to learn both these languages as you learn alot that benefits your day to day development in - for example - C#.

If I was to learn a new functional language today it would most probably be F# since it's going to be a first class citizen of the .Net platform. I think that F# is the functional (well multi paradigm) language you'll have the best chance of being productive in.

Patrik Hägne
+7  A: 

F# is a perfectly good place to start learning functional languages. If you're worried that F# knowledge won't apply to other functional languages, you shouldn't. F# is a member of the ML family of languages. Microsoft just tweaked it a bit so that it plays well with .NET.

Luca Bolognese gave an amazing presentation on F# at PDC 2008. I would strongly recommend you watch it and decide for yourself whether F# is worth learning.

Ferruccio
Great Presentation. Shows me a need to learn F#.
Keith Sirmons
+1  A: 

Will it be useful in development of 'common' applications? Not particularly, no more or less than c or c# is anyhow. It's not RAD, so there are no shortcuts available in F# that will get you any closer to release of a 'common' application any faster than any other non-RAD language.

On the other hand, for programs that are more computation than presentation, F# may be closer to the application domain than another language. Functional languages make dealing with certain problem domains a lot more intuitive.

I personally think it's worth learning, not because it is going to solve all your problems, but because every programmer worth a flip should know atleast one functional language. A lot of seemingly baroque programatic concepts are made more transparent when functional programming concept are floating around in your head.

Another personal preference of mine; I like programming languages with a solid, diverse type system. I do not like shoe horning structures into types that do not have a very strong conceptual match to them. ML type systems, in my mind, allow you to build types with a much finer granularity than more mainstream type systems. As a result, I feel that I can write code that interacts with these structures in a more natural way with ML style languages like F#.

While this doesn't help much with common concepts, that have feature sets to support them in more mainstream languages, for anything that is even remotely uncommon, I would prefer F# to most other languages.