I don't understand why everyone on HN hates Windows server so much. From an administration standpoint they are much easier to setup and use thanks to their GUIs. Windows is very standardized and has very good management tools and interfaces.<p>C#, ASP MVC, and Visual Studio are extremely good tools. I've programmed in C# for 10 years and never had a project I could not do quickly with it. It has very good support of 3rd party controls like Telerik, and there are lots of open source projects on codeplex, github, etc.<p>The most expensive part of software development is paying developers. Spending a few dollars on good dev tools or 3rd party controls is a very good investment and can save a lot of time.
Mono is actually finding its way to new platforms all the time.<p>I was surprised to find out that the recently released Playstation Mobile SDK is based entirely on Mono, so Playstation Vita runs it.<p>And I am pretty sure there's an implementation available on Android. As for iOS there's Xamarin. MonoDevelop on MacOS is also quite good.
I've been using C# for several years, and have bounced between it, Java, Node.js for my side-projects. After all said and done, I keep coming back to C#. I feel more productive and can design and churn out code quicker than say in a Node project. Overall, I actually do enjoy coding in C# and using .NET more than any other language I have experienced so far. The day I tried to use Drupal was the day I realized I made a serious mistake for not thinking I could do things better or quicker in C#/.Net instead.<p>Overall though, Microsoft is trying to move to an "ecosystem" platform. Exampes are Nuget powering their closed/open-source ecosystem for projects and Azure server templates. Even their latest ASP.NET MVC 4 is pushing several open source libraries onto their default project template. They truly see they couldn't win the web battle with WPF/Silverlight as their only options, so they are going for a different angle here in the last year. Additionally, a lot of interesting things are coming out of Microsoft and its employees, such as the open-sourced SignalR which is actively being updated and may become a standard for C# webapps.<p>I realize C#/.NET is not the go-to language for small web-apps yet, primarily due to licensing, but give it time. I say if you are on the fence, and are interested at all in C#, give it a shot! There are many free options for development IDE's and hosting provided by Microsoft. For example, you can use Visual Studio Express and host up to ten websites for free on Azure.
I have been a C# developer since 2004 and nowadays I use it with Xamarin Studio to write iOS apps on the Mac. What Miguel and Nat have done with Xamarin is awesome and I think the future of .NET lies more with what they're doing than what MS is doing IMO.
"It is quite difficult for Python or Ruby to have the level of IDE that Java has. IntelliJ for Java is hard to beat. And Jetbrain (the company that makes IntelliJ) also produces Resharper (R#)..."<p>Jetbrains also makes IDE's for Ruby and Python; Rubymine and pyCharm.
Microsoft is trying too hard to make C# answer to every single technology trend, adding dynamic type, asynchronous methods, etc. In most cases you wind up with a working but much worse alternative to the real thing. For example, here's how you create an anonymous function that returns a string in C#:<p><pre><code> (new Func<string>(() =>
{
return "foo";
}))();
</code></pre>
That's pretty awful and as a result you rarely see anyone doing stuff like that, whereas with JavaScript it's used regularly. But for C# it's another checkbox that they can say they support.<p>C# should stick with trying to be the best statically typed compiled object oriented language.
I have also been working for the last 6 months with C# at the office and I was reading the article nodding all the time. Working in C# is a good experience and you have the feeling that it's an upgraded version of Java.<p>However, for me is still boring. It's not easy to explain and I am pretty sure is very subjective but I feel C# lacks of soul. In the sense that programming in C# isn't as fun as programming in Scheme or Python. Maybe is just me, but I don't use C# outside of my work.
It even saves time, I use it a lot whenever I create an app, even integration with cousins like Visual Web Developer through SQL
Its really a good language to use, but promotes laziness. But its my language though so I can't complain about it since I make a living out of it. I got called by an IT company, one of the biggest in South Africa but they want me to program with Java but I'm just not interested in that.
Good article, but I have to disagree with you regarding the C# ecosystem. Sure, its mainly windows, but there is boatloads of tools and support out there for it. Visual Studio is a great IDE, and the documentation for C# and .NET is generally good.<p>I'm a C# developer mainly, and recently did a bit of Java development in Eclipse (Android ADT) and did miss some features of C#, but the languages are still very, very similar.
Good writeup, and I agree with much of his post. Going back to Java from C# at the language level is just painful.<p>The Java library/framework is more complete and diverse than the .NET one, but it's actually improved alot for .NET in recent years with Microsoft becoming much more open source friendly, the ALT.DEV community, Mono, etc... The .NET community is much more comfortable with alternative not from Microsoft these days than in the past.<p>IMHO though, the JVM has a better alternative language ecosystem than the .NET one. Yeah, .NET has F# builtin to VS these days, but doesn't have things like Scala/Clojure (not first class citizens), Kotlin, Ceylon, etc...