Hacker News new | past | comments | ask | show | jobs | submit login

A programming language is a tool. And every tool has different strengths and weaknesses. I have worked with C# before and I have learned that it integrates well with WPF and other Windows infrastructure. But I have not seen any good applications on Linux yet (note: WPF does unfortunately not run under Linux and it likely never will[1]).

Do I consider C# to be a bad language? No, it is decent. But I do not see it shine outside of the Windows ecosystem. This might be a chicken-egg problem.

My main point is: MdI has supported .NET on Linux for so long. But I cannot grasp why. I admire his efforts and it would be beneficial to understand his motives so that I would know how I can use .NET on Linux for my own advantage. My post is really not meant to negatively criticise C#/.NET. Learning a language is often a multi-step process. The syntax is usually the first thing you learn. But the deeper you dive into the language the more you understand the design decisions. For example, it took me several attempts to understand Clojure and Lisps in general. And I assume that there are some important things about C# that I haven't understood yet.

[1] https://stackoverflow.com/questions/53954047/does-wpf-applic...




> But I do not see it shine outside of the Windows ecosystem.

A very large chunk of the games market on Mac and Linux either runs C# as the scripting host that's the primary developer interface (Unity, etc.) or runs directly on Mono or .NET Core (games made with XNA are almost drop-in-portable to FNA, there's also MonoGame, and Ultraviolet is new but pretty compelling--I'm currently fooling around with it for a project).

Today C# is a thoroughly okay language. It was a huge step forward compared to Java when it was younger and more nimble but now they have real trouble pushing new features (for reasons that are not technical). But it isn't about the language--it's that it's what people know.

And, if I'm being fair, JetBrains Rider is a really pleasant way to write C# these days.


Graphical applications aside, I think C# on Linux for web backend code using .NET Core is one of the best and most ergonomic platforms to use at the moment. Tooling (Roslyn, vscode, NuGet, ...) is second to none in my opinion.


YMMV, of course, but to me this is a surprising take. I quite like C#, but EF Core is awful (it is literally not possible to create in your schema a non-nullable boolean/integer with a default value of 'true'/not-zero without making the member property of your object nullable) and ASP.NET Core is not fully baked.

Compared to something like Nest.js and TypeScript, or even Kotlin and Spring Boot, I wouldn't call it good, let alone "best".


To be VERY clear: I would never go near EF.


Gotcha. I find Dapper (the only other option I've ever seen used in anger?) really frustrating, too, though--boilerplate and SQL statements for simple stuff really grinds me these days.


WCF has a well designed serialization that doesn't have deserialization vulnerability like in Java.





Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: