F# - Good, Bad, or No one know yet...

Hi, I'm about to upgrade to VS 2010 and I was reviewing the some of the new features. I see that F# is now offered with VS2010. - What are your basic thoughts about the language and why would I want to use F# over say C# or VB...or perhaps C++?

Thanks for your help,
Who is Participating?
kraivenConnect With a Mentor Commented:
Hi Fulano,

F# is a primarily functional language but with OO features which allow it to easily integrate into the .Net environment and seamlessly interoperate with other .Net languages. Functional languages are centred around immutability and functions as first class language features. Functional language features, and functional language thinking, are increasingly being incorporated into OO mainstream languages, for example: lambda expressions,  Linq, type-inference.
Functional languages are ideally suited to certain types of problem, particularly mathematical/finance and multi-tasking problems. In the first case the very nature of these languages allow them to closely transcribe mathematical functions, in the second, immutability of values negates the need for locking in threaded applications.
F# is a hybrid language. It can be written in the style of purely functional languages; but additionally F# is also a fully fledged OO language so it is perfectly possible to write complete Web and Windows applications entirely within F# - although at this point in time there is no UI designer for F# - alternatively a solution can contain C#/VB .Net UI projects alongside an F# business layer. This is what we do.
So, I personally would recommend investigating F# (but then I love the language so I would say that). For more information take a look at these web sites:
Nine reasons to use F#
Hub FS
MS F# developer centre
A F# guru's blog

Welcome to the club!
Richard LeeConnect With a Mentor Software EnthusiastCommented:
F# as a language is not bad. It lends itself to certain problems quite effectively as highlighted above, mathematical, finance and multi-tasking problems. When deciding on whether a language is good or bad I tend to look at more features that simply what problems the language lends itself to more easily. For instance:

1. How well is this language known within the industry?
2. What is the current adoption and future adoption for this language?
3. Do I have problems that this language will better help me address?
4. What is the uptime for me & possibly a team getting started using this language effectively?
5. Is their enough skill within the organisation to take advantage or even keep its head above the water if this technology is adapted?

I am sure there are many more questions but these are things to consider. On the back of those questions I would say F# outside the financial industry is not good. Even within the financial  industry there still needs to be other considerations before adopting the language.

Within a smaller team or with just an individual I would say go for it. It will definitely open your eyes up to functional programming, enhance your resume/cv, improve your programming ability, etc.

Mr_FulanoAuthor Commented:
Kraiven, thank you for the links and the overview. Your contribution will be very helpful in my assessment of the language.

Cloud Class® Course: Python 3 Fundamentals

This course will teach participants about installing and configuring Python, syntax, importing, statements, types, strings, booleans, files, lists, tuples, comprehensions, functions, and classes.

Mr_FulanoAuthor Commented:
DaTribe, thank for your thoughts. I can see right off the bat that you have in-depth experience in the business world and are pointing things out that the average person doesn't see on the onset. --- Very in-depth perspective. Thank you!

Richard LeeSoftware EnthusiastCommented:
Great feedback Fulano!

I am not sure how much more I could add except that during my years of growing as a developer and within the computing industry I was, and still am faced with the problem of wading through all the new programming & otherwise tools, methodologies, and concepts. I quickly realised that considered selection of what to delve into deeply was needed otherwise becoming a "Jack of all trade, master of none" would be highly likely. This is not to say learning F# should not be on the cards since as you know to be a star developer you will have to know a lot of things.

I guess my point is here, does learning F# take you in the direction you want to go? Does it contribute to becoming a better developer and how can you leverage it?


Mr_FulanoAuthor Commented:
Hi DaTribe, very good points indeed...my interest in F# was purely based on curiosity. I know how powerful some of the other languages currently are and was curious as - why would I want to code in F# instead of another language. In other words, does it provide better access to hardware than perhaps C++, etc. I do however appreciate your thoughts on the matter and will at least look at it as a possible future personal challenge...

F# is a .Net language, so everything you write ultimately compiles down to IL the same as any other .Net language - there are some optimizations in the F# IL, for example, tail recursion (recursion is the standard looping paradigm in functional languages) but otherwise anything you can do in F# you can do in C#. it's the expressiveness of the language which is important, and whether you use F# for real apps or not I firmly believe that understanding the functional language paradigm is certain to improve your code in your work-a-day language.
Mr_FulanoAuthor Commented:
Both of your answers were very helpful. Thank you for the amount of information you bioth provided.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.