Hacker News new | ask | show | jobs
by brudgers 757 days ago
.NET has been the standard interface at Windows system level for many years. The ".NET languages," particularly C# will provide much less friction than .cpp (or Nim). For no other reason than the quantity and quality of tutorials and documentation written by technical experts and edited by technical editors who are getting paid to write and edit from line items in Microsoft's regular operational budgets.

Or to put it another way, picking languages takes exploration of Windows system programing from an X problem to an XY problem. Good luck.

3 comments

Not sure if the systems programming mentioned by the OP includes drivers, but AFAIK the standard language for drivers is C/C++. Not that it's impossible to use C# (see https://github.com/ZeroLP/WDK.NET), but it's not necessarily the most widely used approach.
You're recommending that OP uses an abstraction over the system. It takes their X problem and makes it a Y problem instead (because they won't learn systems that way)!
Depends on the objective of OP. Abstractions always leak some of the underlying capabilities so you could use them as a more beginner friendly approach to get acquainted with the system while doing something useful or fun.

For related examples, you can learn Ruby just by learning Rails. Or in more general aspect, the web technology stack through a modern web framework.

Not entirely true, Native Interop is pretty good with DotNet https://learn.microsoft.com/en-us/dotnet/standard/native-int...

Though I believe it has regressed at least a bit with the introduction of DotNet Core.

Yes, but he or she is giving convincing sounding reasons that might be helpful for the op.

Maybe it is actually better for OP to learn .net, maybe not. But the answer had quality, so I do not think the downvotes are appropriate.

While I think the intentions of the voting system are for marking low quality, as you've said, I think in practice most downvoters are using it to mark their disagreement.

There's something interesting about that; it implies that grey text signifies a non-conformist view and approach to a technical issue. As is the case here.

I like to skip to the grey text.

> Please don't comment about the voting on comments. It never does any good, and it makes boring reading.

https://news.ycombinator.com/newsguidelines.html

From a technical perspective I think my comment is interesting for anyone running a platform. I don't think this guideline applies.
I wrote the downvoted comment and am a proponent of downvoting for disagreement. Downvoting is an alternative to arguing and often makes for better comment pages.
It's a great perspective. In fact I upvoted your comment just now.

By contrast, it also prevents users from commenting. See dang's posts on this.

Regardless, it's interesting to note that it also, indirectly, highlights interesting comments.

Do you also find that interesting?

Typically, if a comment has been downvoted, I use it as a reason to filter it out. There’s more comments than I am going to read so reducing the pool is useful to me…and I don’t identify as a contrarian.

Thinking about it, downvoting for disagreement is the analog of upvoting for agreement.

Depends what you mean by "system", but there's plenty of the Win32 API that's not exposed by first-party packages in dotnet (e.g. audio). It's certainly the most convenient way to write an application (once you get over the UI toolkit disaster area), but "systems" programming might also include drivers.
If someone is hiring Windows-systems-programmer-1 it is more likely to be about performance of .Net applications than writing drivers. And sure things like managing thread pools and tweaking garbage collectors and allocating resources in general are less sexy. So reading about writing drivers and talking about writing drivers and watching YouTube rants about writing drivers is more entertaining.

The OP is coming all the way from Nim into two decades of .Net as Windows “easy mode.” There are important reasons to use cpp, but most of the reasons in the world of Windows are .Net.