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

Posted on 2010-11-21
Last Modified: 2013-11-26
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,
Question by:Mr_Fulano
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
  • 2

Accepted Solution

kraiven earned 250 total points
ID: 34186644
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!
LVL 18

Assisted Solution

by:Richard Lee
Richard Lee earned 250 total points
ID: 34187119
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.


Author Comment

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

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!


Author Comment

ID: 34194130
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!

LVL 18

Expert Comment

by:Richard Lee
ID: 34195210
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?



Author Comment

ID: 34202805
Hi DaTribe, very good points 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...


Expert Comment

ID: 34203741
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.

Author Closing Comment

ID: 34272344
Both of your answers were very helpful. Thank you for the amount of information you bioth provided.

Featured Post

Guide to Performance: Optimization & Monitoring

Nowadays, monitoring is a mixture of tools, systems, and codes—making it a very complex process. And with this complexity, comes variables for failure. Get DZone’s new Guide to Performance to learn how to proactively find these variables and solve them before a disruption occurs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
The viewer will learn how to use and create keystrokes in Netbeans IDE 8.0 for Windows.
The viewer will learn how to use and create new code templates in NetBeans IDE 8.0 for Windows.

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question