This text is a reply to a question on StackOverflow.com. The person asking the question is a web developer who is fluent in the .NET framework and JavaScript. He asks what would be the next language of choice that could benefit an engineer in his career.
First of all: C++ is not recommended. Not even by the experts. As one of the reasons for C#, the lead architects at Microsoft state: “C# was invented because C++ was too hard.” There is no good point in torturing oneself is there? For in depth background informative I recommend watching the Visual Studio Documentary.
For some hard job market data have a look at this website on language trends. It shows demand and supply for a number of popular languages. The advice: “Go away from Java (or well, from everything else for that matter) and start on .NET!” There is a strong demand for PHP developers, although paradoxically PHP hourly rates are low.
If you want to learn a functional language I would suggest F#, although the language has been released only a few years ago. I do expect F# to catch up; in the end of the day Microsoft always does. If you wish to learn F#, Visual Studio 2010 in combination with the free online book ‘The F# Survival Guide‘ is a good start.
There are many functional programming languages. Still I believe that for a C# developer an investment in F# is a good choice. Three reasons: 1) it is a different language paradigm 2) you can leverage your existing knowledge of the (uninteresting) support libraries and 3) C# has some functional programming features that you might better understand after learning a real functional language. What I am basically saying is: learn F# to improve your C# skills.
Learning a new paradigm is a good thing since it broadens your understanding of computer science as whole. But also learn available tools, framework and libraries. Examples are: Microsoft Message Queue, Microsoft Enterprise Library, ASP.Net MVC, Code Contracts, StyleCop, FxCop or unit testing with PEX.
Microsoft has done a good job with the .Net framework and C#. It has good performance; it is a multi-purpose language and there are continuous improvements. Even as important: the framework, language and tools are very well supported through an active community, books and certification. There is no need to run away from C#. The neighbor’s grass will not be greener.
One could criticize Microsoft for not being an innovator. Apart from its very first product – BASIC – It has never been. Not even with Windows. But one thing is for sure. You can also trust Microsoft to be Microsoft: a slow starter who is very good at catching up. Business value is not always achieved using the language du jour. If you are fluent with C# and the .Net framework, stick with it and strive to become even better. Even for C# experts there is still a lot to learn.
Well, if you want to speed up your websites C++ is still a good alternative. Just today I read a nice article about creating websites with C++. We do about the same thing with FreePascal. Have a look at http://stevehanov.ca/blog/index.php?id=95 and http://services.cnoc.nl/lazarus/index/fclweb