I am a huge linux fan and have been ignoring .net, C#, and visual basic due to their relationship with Microsoft. Am I foredooming them just for their relationship?
Is there any advantage to learning them, when you are mainly a linux user?
|
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.
|
They are fully deployable to Linux environments using the Mono framework which is not controlled by Microsoft. I'd say ignoring them because you like Linux would be a mistake. If you don't like the languages for other reasons like syntax or memory overhead or whatever, then fine but I'd not write them off because they are based on work done at Microsoft and partially supported by Microsoft. As far as advantages to use, they have a rich ecosystem behind them even through Mono so it all just depends on what you want to do. I mean if all you do is web apps then RoR or PoD would probably suit you fine. If you want to dabble with an enterprise level language that lets you use functional programming and let's you combine freely with an even more functional language that integrates fully with it then Mono becomes an interesting alternative to the JVM or doing a C++ hydra. .NET and Mono were designed to use the Common Language Interface which was designed from the beginning with language inter-operation in mind. The JVM might have an edge in terms of running all over the place (even Smart Cards) but it's interoperability has been less "designed-in". Mostly it's going to be a matter of taste or enforced use. |
|||||
|
|
Yes. Learn them. Languages are to programmers as hammers are to carpenters. The overwhelming majority of my professional experience has been LAMP dev, yet my degree focuses on VB.NET - half because I figured if I'm paying for it anyway, I might as well learn something new, and half because the alternative was Java. ;) Learning these languages for me was like learning to run backwards. It changed the way I conceptualize programmatic problems (and programmatic solutions): context, abstraction, patterns. At the very least, skills (even ones you rarely use) always confer the value of experience gained from adding them. HTH :) |
|||
|
|
|
There are a few reasons you may want to learn .NET:
but also a few reasons to not learning it in your case:
|
|||||
|
|
Having a familiarity with C# can't hurt you. Exposure with other technologies will allow you to make better decisions in the future about what you are good at and what tool is best suited for the job. If you decide they are not for you, that is fine if you are making an educated decision. As an aside, if you know Java, then you will have a good feel for the basics of C#. Though, there are things that have been added in .Net 3.0/4.0 that will be different like LINQ and lambda expression that set it apart. |
|||
|
|
|
If you prefer Linux to Microsoft, then getting into .Net isn't really a good idea. .Net is fundamentally tied to Microsoft. C# is a nice enough language and it's true that you can use Mono on Linux. However it's not exactly a comfortable place to be - Mono isn't 100% compatible with Microsoft .Net and probably never will be. This is because of patent threats, various Windows-specific features and the fact that even if C# itself is standardised by ECMA, most of the rest of the .Net platform isn't. Furthermore the Mono ecosystem on it's own is small compared to other open source languages. I think you'd be much better of looking at the new JVM languages (Scala, Clojure, JRuby, Groovy are probably the most promising). Reasons:
|
|||
|
|
vb.net is on the way out: Bob Tabor: "While I began with VB, I haven't seen a lot of docs / videos / articles / books using VB for Win8 or other recent technologies. Increasingly, it feels to me personally like C# would be a good investment." C# is the way to go. But you can always use mono for c# on Linux. |
|||
|
|