I’m probably going to take some heat for this question. But I’d like to know how to address this problem. So here goes.
I program (to different levels of competence – admittedly) in various languages. I have dabbled with C#, and it seems quite a nice language (reminds me A LOT of Java and C++). The problem is that I have what can only be described as a pathological distrust of all things from the Redmond company – as a result of experiences too many to enumerate here.
I am a great believer in open source software (GPLd or otherwise) – and am an avid consumer and contributer to many Open Source projects.
My questions are the following:
-
.Net can ostensibly be run on Linux using mono – but is anyone actually using such a setup in production?
-
It seems to me that almost every (half year?) or so, a new version of the language is pushed out – (I don’t know whether the new versions are backward compatable). In any event, if you take other languages e.g. C/C++, Python etc, the ‘versioning’ is far and few between – therefore it provides a more ‘stable’ environment for the developer. It seems (in my mind at least) that learning/using C# is going to be a never ending learning curve every six months – I am not sure if I have the wherewithal to commit so much to any one particular language.
To summarize, I am trying to balance the pros and cons of learning/using .Net (and C# in particular, which looks like a beautiful language), but if I do, I want to deploy on Apache/Linux (with either mySQL or PostgreSQL backend) – as opposed to IIS/Windows/SQLServer.
Is this a pipe dream (running .Net/C# on Linux), or is someone out there actually using it in production?
While C# does change periodically, it’s more along the lines of 18-24 months than 6 months. Moreover, the C# team is very conscientious around making the changes as backward compatible as possible. (There will always be potential breakage when new conversions are introduced etc, but this is mostly a problem with corner cases such as overloading in the inheritance hierarchy.) You don’t have to learn everything to do with the latest version… and in the case of C# 4, if you don’t do COM and you don’t want to use dynamic typing, there’s not very much to learn anyway. The enhancements for C# 2 and 3 were much larger, of course – but then they brought much larger benefits too.
As for whether Mono is used in production – the Mono project itself has a list of companies using Mono.