DEV Community

Discussion on: Pitch me on C#

Collapse
 
abhinav1217 profile image
Abhinav Kulshreshtha • Edited

C#'s overarching philosophy is basically that there's no such thing as a bad feature

Nicely put.

For my part, I work well under constraints, and I appreciate when a language nudges a user towards best practices (especially since, you know, I have coworkers...)

Personally, I too find that such an overload of features is not a good thing, that is why I recommend students to learn Java before anything else. A stricter environment to learn basics can be adopted to flexible life, not the other way around.

But it is this philosophy that has made C# a truly universal language. Web, All desktop platforms, all mobile platform. Unity, Godot, Game development. Blazor for webassembly. Micro-controllers, You name it, you will get C# on it.

Collapse
 
webbureaucrat profile image
webbureaucrat

But it is this philosophy that has made C# a truly universal language. Web, All desktop platforms, all mobile platform. Unity, Godot, Game development. Blazor for webassembly. Micro-controllers, You name it, you will get C# on it.

I have to give you game engines--I'm not in that space but I'm aware C# is big in it--but for the rest I'm skeptical that C# is more per-se universal than anything else. Seems like these days pretty much everything has a native compiler, a WASM compiler, and a JVM compiler. Like, I could write pretty much the same paragraph about the universality of, say, LISP, which has the smallest list of language features I'm aware of.

Thread Thread
 
abhinav1217 profile image
Abhinav Kulshreshtha

Yes. there is a native compiler for everything. Game engines have C++, Godot have GDScript. Rust is getting popular with wasm. But there is a C# solution available, for those who want it. Mobile apps, with Xamerin, Front-end with razor and blazor, Desktop apps with multiple gui toolkit support, There is an SDK for microboards like arduino too. Microsoft is not trying to make C# be the best solution in all the field, but trying to be "An Acceptable Solution" to all field.

And reason why these fields support C# as a native solution, because this way, developers wouldn't need to learn it from scratch. C# compiler doesn't compile it to CRL/IL in all cases, It can be configured to produce native binaries, or a portable executable library file. This is why it is easier for anyone to provide first party support to C# in their field.

In the end, a C# developer can write code for any of supported field, without need to learn a new native stack. And if you are creating something new, and want to attract developers quickly, providing support for C# might be fastest way for you.

It may come with tradeoff, Mobile apps in C# are really slow, But for some, hiring and training cost may just be high enough that they would be willing to accept tradeoffs.

Thread Thread
 
webbureaucrat profile image
webbureaucrat

I'm not denying that C# is cross-platform, and I do understand the benefits of not having to learn a new language for every stack-- I just don't see that as being any thing specific to C# or C#'s philosophy.