Arturo Dos
3 min readSep 27, 2021

--

Honestly this piece confused me - I'm not sure if I truly see your point, and would really love for your to elaborate on a few things. Otherwise I tend to agree with some of the existing comments.

First of all, the bulk of the argument seems to be based on some ancient history of computer programming (COBOL?!), we live in a very different world now. A language like C# and Javascript serve, for better or worse, more purposes than COBOL and C did back in the days. They're multi-paradigm, cross-platform, cross-device and multi-runtime. Not to mention, cross-industry.

I'm not sure if you're aware (because most engineers actually don't), a language as popular as C# is actually used in a lot of different industrial verticals for different reasons. Enterprise Web and Windows Apps (on various flavors and versions of Windows) are just two popular avenues. C# is also the dominant language for game programming, not to mention tons of IT integrations (a world I, or most software engineers aren't familiar with).

To criticize C# (or Javascript, or Python, or any modern language) of feature-creep is usually an inability to understand how a modern programming language spans across different communities, usage scenarios and working contexts.

That, to start.

Secondly, the part about the switch statement, what's so weird about that? The answer to the question is declarative programming. There are advantages to imperative and declarative programming paradigms, the structure/syntax you pointed out as a "problem" is super common in declarative programming. C# over the years have added a lot of declarative programming features to a language that was originally built mostly for imperative programming.

Why is that a bad thing?

To echo what someone in the comment section said about enterprise programming - if you want to architect and engineer a large system, understanding the purpose and applications of declarative programming paradigm is actually very, very important. It makes code easier to test and QA.

So honestly I don't understand the fuss.

(FYI I'm not a programming languages designers so don't grill me on the academic details of language designs, but I welcome a constructive discussion)

Thirdly, omitting the type in declaration - well, aren't statically typed languages like C# and Java always criticized by the other camp for being too verbose? That is why.

Again, why is this a problem?

Lastly, the last bit on how C# is dying is one of the most irresponsible ways to draw a conclusion. You're basing it on number of StackOverflow questions? really?

Why?

Well, most people who visit StackOverflow never ask questions because plenty were asked and answers in the past - that's the whole point of going to StackOverflow to begin with.

I work in Enterprise SaaS sphere, and I can testify that C# is not dying, in fact it's going stronger now that Microsoft made much of it open source and reunited many of the industrial communities that used to use different flavors of C# (Talking about .NET Framework, Mono, .Net Core and all that mess before the current .NET).

If you want an analogy, it's like criticizing the F-35. If you truly understand what it accomplished as a sixth-generation aircraft for the modern age joint-operations involving all military branches, not to mention the engineering and management marvel required to accomplish, then you'd praise more than criticize. BUT, if your tactical know-how and perspective are confined to the old age F-16 dropping dumb bombs and A-10 strafing through tank formations, then sure, you can claim F-35 is useless given its smaller payload and inability to perform what F-16 or what A-10 did back in the days.

Yeah, this whole piece about C# sounded, kind of, just like that.

Anyway, I'm interested to hear more.

--

--

Arturo Dos

Serial Entrepreneur in Education and B2B SaaS. Product and Engineering Management. AI, Education and UX. Philosophy, Dance, Music and Culinary Hobbyist.