Live data from Hacker News

Why isn’t dotnet core popular among startups?

old.reddit.com

41–50 of 124 posts

Re: Why isn’t dotnet core popular among startups?

#42
I don't think that's true. We have been using ASP .NET Core + SignalR for everything in Notesnook[0]. It has great performance, libraries for everything out there, very good ergonomics, and a mature ecosystem.

I know you can probably get more performance out of Rust or Go but I don't think rq/s benchmarks really hold up in reality. If you are running a startup, you'd probably see 1 to 2 rq/s unless you become viral. .NET Core can easily handle that and more.

[0] https://notesnook.com

Re: Why isn’t dotnet core popular among startups?

#44
post #35

I recently launched a startup, we use Java, some Python and even a little bit of Rust. For web we also use plain Javascript. We will most likely add some GoLang and C/C++ for specific problems we need to solve in the future. But using C# .Net? It's completely irrelevant, it adds absolutely nothing. The performance is similar to Java. The syntax is similar to Java. But the eco-system is one of the smallest of all the…

I can't tell if this is serious that you're a startup using 3 languages with plans to use 2 more. I'm not saying that those might be the best tool for the job, but the complexity to manage that whole build chain sounds crazy overkill complicated for what amounts to premature optimization using all those languages

Re: Why isn’t dotnet core popular among startups?

#45
post #8

Why would you use C# if starting a company/project today? I know C# fans love it, but seriously why not choose a community driven language over one controlled by microsoft?

I wouldn't use it personally because I use other languages, but C# is perfectly fine? It's basically Java without most of the bad parts. It's a very well designed language that fits most niches (fast, compiled, familiar syntax, feature rich, adopts recent PL concepts, etc.)

Yeah every time I use C# a bit, I just have to laugh a little bit in comparison with java (which I've used a lot more); it reminds me of nothing so much as reading a first draft, and then reading a final version of the same thing after it's been worked over by a good editor.

Re: Why isn’t dotnet core popular among startups?

#46

Earlier quoted context omitted.

What do you see as the issue being "controlled by microsoft"? What risk do you see here?

Why answer my question with the opposite question? What reasons do we have for specifically wanting to use a microsoft controlled language?

I would just like to understand specific threats or issues with using C# as a language. I've used it for 20 years at this point without issue and the latest IEEE language survey shows that it remains one of the top languages[0]; I'm wondering if you have some insight into why .NET and C# are a bad choice for engineering teams that I've somehow overlooked in my 20 years of working with it.

It sounds like your argument is "because Microsoft".

If you are using VS Code, GitHub, or TypeScript -- well, all those are also controlled by Microsoft, aren't they? Microsoft is the biggest investor in OpenAI and in fact offers their own Azure labeled OpenAI -- are you going to give up on OpenAI because it's Microsoft controlled? React is controlled by Facebook. Go is controlled by Google. So what?

Why use C#?

    - It's a very small step from TypeScript to C# if a team needs higher throughput on the backend[1][2]
    - `System.Linq` provides a superset of JS Array methods and is easy to map from one to the other.
    - It's performance is on par or superior to Go[3] and competitive with Rust[4] while being much easier to adopt because of the language similarity to JS and TS.
    - It is an object-functional hybrid language owing to its influence from F#[5]; discriminated unions are on the roadmap and available today with packages like Dunet and OneOf, it has pattern matching like Rust, extension methods provide flexibility in modelling, named tuples in C# 12 converge even more with TS, it supports destructuring record types and classes, it has immutable record types
    - Minimal APIs are very familiar for teams using Express but need more performance.  I'd actually say that it's a bit simpler than Express on Node for common use cases since there's nothing to import when setting up minimal APIs since it's all first-party Microsoft.
    - Platform support for source generators are a revelation; it removes a lot of boilerplate code while actually improving performance over reflection.
    - Many of the things teams love about modern JS actually have influence from C#.  Lambda expressions in JavaScript, `async/await`, and more.  In fact, C# and JS/TS have been converging (see the linked repo).
    - It's relatively easy to write high throughput code in C# with support for both concurrency (Tasks + Channels) and high level abstractions for parallelism (Task Parallel Library) as well as full access to threading.
    - C# allows easy access to underlying low-level primitives; you can program with high level abstractions for productivity but still have access to call `unsafe` code if needed.
    - EF Core is possibly the best ORM on the market right now in terms of performance, ease of use, maturity, and database engine support.
    - A benefit of a language and runtime backed by Microsoft and used in the enterprise is that security issues get addressed by a team of professional engineers; you don't see the same types of security issues that pop up in the Node/NPM ecosystem.
    - This is a big boon particularly because of the broad standard libraries and first-party libraries for many use cases.  Rather than importing unknown dependencies for common use cases, you end up with a baseline of professionally maintained, OSS code.
    - GitHub's State of the Octoverse report in 2020[6] showed that C# had the least Dependabot alerts and has the least transitive dependencies (less prone to security issues via package managers).
    - As a general purpose language, it can be used in many domains from desktop to devices to web to gaming (both Godot and Unity; RyujinX).
    - It's also quite mature and stable while languages like Rust are still ironing out async and Go just released generics.  C# has been there; done that.
My personal opinion is that C# is the language that most teams want but don't know enough about it or have a bad taste from the .NET Framework days. While the runtime is more complex than Node, the language is very similar to TypeScript owing to its lineage from Anders Hejlsberg. C# and .NET in its current form is a great language and platform to build on.

Besides, if a team is already using VS Code, GitHub, and TypeScript, they're already in the Microsoft controlled ecosystem.

    [0] https://spectrum.ieee.org/the-top-programming-languages-2023
    [1] https://github.com/CharlieDigital/playwright-scrape-api
    [2] https://github.com/CharlieDigital/js-ts-csharp
    [3] https://medium.com/servicetitan-engineering/go-vs-c-part-3-compiler-runtime-type-system-modules-and-everything-else-faa423dddb34
    [4] https://www.techempower.com/benchmarks/#section=data-r21&test=composite&hw=cl
    [5] https://itnext.io/getting-functional-with-c-6c74bf279616
    [6] https://arxiv.org/ftp/arxiv/papers/2110/2110.10246.pdf

Re: Why isn’t dotnet core popular among startups?

#47

Earlier quoted context omitted.

Because ecosystem is less fragmented which makes day to day job pleasant C# has best tooling on the market, by far. Btw. C# has huge oss community

One could argue that fragmentation is a sign of more active development and a cause for excitement. Of course, it comes with less stability/maturity, but it means that everyone is empowered to do their own thing. Huge cultural difference.

Yeah because the fragmentation of the JS ecosystem is such a great feature

Re: Why isn’t dotnet core popular among startups?

#48
Honestly, when I started dev the .net learning materials made me feel like an idiot. It seems like no one teaching it was willing to acknowledge how things were organized might have been stupid. Ergo, any confusion you had was a problem with you not the software.

Cryptic errors for basic mistakes and the default option for it, at the time, visual studio's thousand menu's and buttons.

"Oh you complete fool, you're using .net version 4.7 which is completely incompatable, go through 5 menus to download it. Hope you have the right version of Microsoft Silverlight!" I had to download like 10 versions of .net by the time I was done.

A comparatively large amount of work for a hello world compared to almost any other choice for PHP or Python. And those had tutorials and text based environments were approachable.

I definitely had issues with Apache's config hidden god knows where but learning how to search for config files was a skill I found far more useful than rooting around layers of menus while someone told me this was normal and, actually, good.

If I had to choose a tech start for a start up MS still wouldn't be my first or second choice. I'm sure it works, but god that first year informed me it wasn't the community I wanted to be in.

Re: Why isn’t dotnet core popular among startups?

#49

Earlier quoted context omitted.

What do you see as the issue being "controlled by microsoft"? What risk do you see here?

There was a good discussion just yesterday, "Why did Visual Basic die?" https://news.ycombinator.com/item?id=37470318 That might be a place to start looking. It basically comes down to:b they could take development in any direction and the community of users is powerless.

But why can't you fork it and take it in the direction you want? The situation is literally no different from Python or Node or Ruby, the people running the most popular distribution could take it in a direction you don't like and the power you have (or the only option you have) is forking.
Post reply on HN