I’m about to start working on a rich-internet-application project for a student organization at my university. I will be the only programmer, and what technologies to use is totally up to me. I’ve already decided on going with Silverlight, but I’m not sure whether to use C# or F#. Here are some of the things I’m keeping in mind:
C#:
- I already know it and have used it extensively with Silverlight at work. I have no F# and little general FP experience.
- Some say the OOP paradigm works better for complex stateful UIs.
- Maintenance: I’ll be in school for three more years, but after that if the app is still in use they may have a better time finding someone else to maintain it if I use a more common language.
- C# experience is probably more valuable in the “real world”.
F#:
- The main reason is I want to learn something new. Functional programming languages seem pretty cool (I find myself using the FP features of C# very often, and think they’re the biggest improvement in C# 3.0). I think I’d have a lot more fun if I used F#, but am I being unrealistic in thinking the cost in time and effort might not outweigh the benefits?
In my opinion, when you are a student, you should be trying to put your fingers in as many pots as possible.
The more languages you play with, the more understanding you will have of the “best” ways of doing things in a specific language.
As for “experience” being more valuable in the “real world”. Personally I only ever consider true commercial experience when looking at potential candidates. Experience in a language when you’re in a job and being paid is extremely different to experience in using a language when learning / studying it. Things you do whilst studying are about gaining skills and knowledge whereas things you do in a commercial environment give you experience in solving real life problems.
Bottom line… play with the cool stuff whilst you still can!