Hacker News new | ask | show | jobs
by atonse 2461 days ago
I’ve thought about this but I doubt it. The big change has been the perception shift.

.NET was always really solid tech. Microsoft has always had stellar developer technology. But the love affair with open source and the super villain role that Microsoft played, is what kept people away, not the tech itself.

I remember wanting to give a talk about how amazing C# was to a ruby group. I never did it, but it was definitely a quaint idea in 2011. But rubyists would’ve loved C#.

6 comments

> But rubyists would’ve loved C#.

As a Rubyist, I'll admit that C# is the least bad of the C++/Java style of static OOP languages, but it was that it was always too tied to the .NET ecosystem and heavyweight enterprise tooling more than Microsoft's “supervillian role” with regard to FOSS that made it unattractive for lots of places where I would want to use Ruby. That's improved with Core, somewhat.

I was a fulltime ruby developer before I became a full-time .NET developer (usually by accident). And things like Linq, Visual Studio, and Resharper ultimately allowed me to create code that was highly organized, while never sacrificing productivity or performance.

The thing I always hated most about the .NET ecosystem was having to run on Windows Server, so that's definitely a welcome change with .NET Core.

But C# has always been a wonderful language to work with. And you never really feel the static typing slow you down, yet get all the benefits of not having to write a bunch of useless tests that replace what a compiler should do in the first place.

(Not trying to make this a dynamic/static flame war by the way. I'm a full-time elixir developer nowadays, so I'm still in dynamic-land and enjoy it. Just not dogmatic about any of it)

More than windows it was the GUI centered developer tools and server setup. With powershell and the dotnet CLI things have improved massively. Now that we can just run on Linux I'm absolutely in love. I still use Java for some projects because of library dependencies (and kotlin also makes the work enojayble) but I prefer .net for Greenfield projects
It improved with mono and it's great to see continuation with core by ms. I don't use it atm but I remember learning c# from their beta book before v1, it was better than java even at that time. I've used c# from objective-c macos app maybe 6 years ago, it was pleasure to write c#/objc interop with mono and see same codebase used on windows app working fine (even faster) on macos via mono. The state must look much nicer now whan 6y ago, if I see opportunity to write some c# code now, I won't have any personal reservations, I'll do it with pleasure.

ps. my personal favourite programming languae at the moment is by far Julia and I encourage anybody to have a peek at it - I've missed it somehow[1] [2]; followed by crystal

[1] https://youtu.be/DRKKAFYM9yo [2] https://youtu.be/HAEgGFqbVkA

There was a brief window where mono was in the default Ubuntu distribution along with several mono-powered open source Linux productivity and media applications such as Banshee (media player), F-Spot (photo manager), at least one note taking app, and probably at least one more application I'm forgetting.

There's a parallel world out there where the Gnome project and Linux distributions rallied around C# as a strong way to write applications, instead of the weird backlash/demonization they all soon received that ended such a brief "golden age".

Yeah, .NET Framework was an absolute pain to work with also, there was a lot of boilerplate, especially when it came to ASP, and like you said it was tied to Windows and Windows API. Now with Core it's multiplatform and they're opening up all of the traditionally Windows-based SDKs to Core architecture and making them multi-platform while having them open source.

.NET Core is an absolute pleasure to work with, and while I'm not into Razor views, the web startup modularity and extensability of the pipeline make swapping out solutions a breeze. I can run a full React app in some a wwwroot folder that has almost 0 dependencies on the outer C# code, such that I can plug out the folder and copy it into a new directory and run it like any other React application - that was mind-numbing with ASP non-Core. I love it

ASP.NET MVC was much easier to work with, and WebAPI was even easier (especially with annotation support). Each time, you had even less boilerplate code.
As someone with a Ruby background in a new job doing C# stuff, I really love C#!

Now the Windows exclusivity of .NET is no longer a thing it's much, much more appealing (who wants to run Windows Server over a Linux server if they can avoid it?).

We have been selling a relatively complex product built using C# for many years now. It is perhaps unusual in that it was built on Linux for Mono primarily, and then ported to .NET on Windows subsequently.

What we have seen over the years is:

1. Deploying on Windows became less popular, partly because it was much harder to manage at scale than Linux, and partly because of the price of licensing.

2. Mono was seen as a toy, and is often considered a critical risk by purchasers. This was even true after Microsoft bought Xamarin, and thus de-facto control of the project, and despite the fact that it was far easier to patch bugs in the open source runtime than in the closed-source .NET Framework (and we ran into several in each).

C# (and even more so F#) is a great language, but was hamstrung early on by Microsoft's approach to competition - I think had this been different early on, the world would look very different with respect to popularity for critical infrastructure vs the JVM. Whether it's late enough to salvage something for a large number of non-traditional-MS is debatable - it will be interesting to see how it plays out over the next few years.

I actually went from C# (WebForms) to Ruby (Rails) and then back to C# (MVC).
Rails is still pretty good. I'd probably use it if I were starting a new project still.

Can even do Type-checking now thanks to Stripe! https://sorbet.org/

The ecosystem is what drove me away from C# (as well as not wanting to do enterprise work). I started dabbling with Ruby and Node and the sheer number of free third party libraries blew my mind. C# simply didn't compare.
One of the nice things about .net is you don't need to download half the internet to do most of the things you want to do.
This is a very weird criticism. I'm a Ruby dev, but I spent eight years working with C#, and I can't remember any times where a Ruby gem was more readily available than a NuGet package.

If anything, I'd say there's less choice in the Ruby world, especially in the data science and ML fields.

Depends. I think it's valid. There are a tonne of libraries available in both ecosystems but I find they tend to optimize for different things.

I came from the Java ecosystem to .NET and even they are different. The .NET ecosystem was held back a little by the lack of embracing open source at the beginning and being super commercially focused. So things like finding a good library for easily working with PDF will set you back $400 rather than just using the defacto library that everyone has used forever and is free. I've encountered that with PDF libraries, rules engines, workflow engines, job scheduling libraries.

It's still a decent ecosystem, it just is different because of its roots.

Totally agree. The tech was so awesome that it lured Miguel de Icaza away from Gnome.