Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This comment is kind of out of the blue because no one in this thread is advocating for using C# for infrastructure projects.

Java is frankly a bad choice for that too these days for a new project, and for the same reason: why would you develop infrastructure in a language that requires shipping a runtime when Rust and Go exist? That made a lot more sense back when C/C++ was your only other real choice.

Meanwhile, plenty of people are in this thread telling you that they do in fact use C# to distribute cross-platform applications, but you seem to be uninterested in hearing that.



Java has been fine for infrastructure projects. There is so much out there that relies on things like elasticsearch, Kafka, or any aws service. Heck even the columnar dbs like pinot and Druid are most likely more used than clickhouse.

C# is also fine for this, just way less popular. Recently ms put out https://github.com/microsoft/Garnet when the redis debacle happened.

The Apache project has helped put out quite a few large infra projects, most of them in Java (I don’t know why this is but assume they have lots of resources to help with that, and also that people don’t like debugging memory crashes).

Ms has just been not the greatest collaborators with their open source community. A lot of the time it seems like they want to do the initial foundation, then leave “drawing the rest of the owl” to the community, which ends with lots of partially functional things. GUI frameworks, f# tooling, drivers for commonly used critical infra. At the same time, people get upset when ms tries to build a better version of an existing open source project, so there’s no winning. They’ve just put themselves in such a poor spot.


ClickHouse is more widely used than Pinot or Druid based on any possible metric.

If you try to install any of the latter, it will be apparent why. (They are poor in usability).


C# recently came out with Native AOT (ahead of time) compilation that compiles your app to a binary that can run without the .NET runtime (!!), and has fast startup and lower memory overhead. There are a few drawbacks: many reflection and run-time code generation and loading features are unavailable, and LINQ expressions must be interpreted which makes them slow. But it's easy to work around those limitations for a greenfield infra project, and C# has great performance characteristics.


It's even worse, plenty of Azure itself is C#, and I don't mean a few dashboards, I mean the infrastructure itself, heck the serverless infrastructure's open source and its basically C#. I'm sure the same could be said of AWS and Java (making an assumption), or Google Cloud Platform and Go / Python.


Ironically, given the past history that lead to .NET existence,

https://devblogs.microsoft.com/java

https://www.microsoft.com/openjdk

https://code.visualstudio.com/docs/languages/java

Because it turns out, making Java running on Azure, on those 60% Linux workloads, is lot of money.

Also plenty of Azure, anything CNCF related, is mostly Go and Rust.

Which is kind of sad, I would expect Azure to be a good contributor for having a .NET presence in the CNCF project landscape.


Fully agreed! It's really interesting how diverse their entire platform really is in the grand scheme of things. One thing I had hoped to see is one of those IL conversion projects that can make JVM bytecode and .NET bytecode co-habitate would have taken off slightly more. I guess the only real way to make those work is to either target both for WASM or implement the standard library of the respective languages in the target platforms, which is a can of worms.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: