I was really outraged by yesterday’s post What will happen to C # and where is Stroustrup? Of course, everyone has a right to their opinion, but the author uses many manipulative techniques, thus negatively influencing the opinion of young readers. And the text itself is a marketing translation, which really surprises me. Therefore, I wanted to debunk the myths from this article.
Don’t get me wrong, I’m not a C # fanboy. Just recently on a podcast DotNet & More # 53 C # 10 and more I was complaining about C # 10 not being impressive. But in your statements, you must try to be at least a little objective. Or, at least, sneer at bias.
Parsing the original article
First of all, let’s take a look at the manipulative techniques used by the author of the original article. It is very useful to identify them, since it is manipulations that cause emotions in us and encourage us to take rash actions:
Value judgment: “incomprehensible code”, “hacker fix”
Senseless, but caustic phrases: “I do not know of a more efficient way than functionality creep to destroy the programming language”
Inaccurate comparison: the path from C to C ++, modern C ++ (with heavy Alexandrescu legacy) is completely different from C #. The comparison resembles “the plate is flat, lies on the ground, so the ground is flat.”
Conducting logical chains based on an initially weak hypothesis: if you doubt that the complexity of a programming language leads to its collapse, then all arguments become invalid
Strange and one-sided statistics
I think I managed to convince you that the original article is not so much a technical post as an attempt at manipulation. Hopefully the editors of the blog will not make this mistake in the future.
Next, I want to try to debunk some of the myths. There will be a lot of personal opinion, so don’t be too harsh.
The complexity of the language does not affect the entry threshold that much. I have interviewed many young guys and have not come across a single Jun complaining about the complexity of the syntax. For them, fundamental concepts, such as DI, unit testing, turn out to be much more complicated than the switch statement.
But among the “eternal middle” there are enough people who have “stopped developing” in C # 5 or 6. By “eternal middle” I mean programmers who, due to their experience (5-10 years), can no longer be considered juniors, but by qualifications do not reach the seniors.
PS author of the original article https://www.linkedin.com/in/andrewzuo/ has only 2 years of experience with C #. So it would be possible to somehow extrapolate the above, but we will not do that.
The IDE is very helpful in understanding the new syntax. Both VisualStudio and Rider highlight “new” ways to get things done in a shorter and clearer way.
The author writes “C # is dying, Microsoft is killing it by adding random things that nobody asked for.” But this is not the case! Starting with C # 6, all features are offered by the community. Moreover, the very process of selecting a proposal champion is open and, more or less, independent.
The author writes “Just throw a macro at this”, giving the impression of an unstructured C # development. Only if he looked towards F #, Scala and other FPs, he would better understand the development vector.
PS It is not very correct to accuse the author of narrow-mindedness, since his main experience with C # in the context of Unity, and the concepts of functional programming are very poorly suited for games
For 10 years now, I’ve heard from every iron that C # is dying. At some point, it did, but .Net Core gave the technology a new life.
We have a unique opportunity to work with libraries without legacy snot. Compare what’s in Spring and AspNet to see who’s the real hipster smoothie. Ask the Kotlin developers how many wrappers around standard libraries they write. Writing on modern .Net is very pleasant!
C # not hype? We witnessed when everyone rushed to php, then ruby, then node.js, now go. And often they left behind a very hard-hitting code. Don’t you think they were all the same people?
10 years ago .Net was popular mainly due to Desktop development. But the fall in the popularity of shapers only slightly shaken the position of .Net, Backend development is growing and dragging.
It is important to find your place. No technology can be universal, C ++ has taken its own niche, and even Rust cannot significantly move it. The niche for C # is Backend, and features are released for Backend developers.
Sometimes illogical things happen: Java for BigData, C # for GameDev (it looks frankly bad in Unity), Go for business logic. It is impossible to predict, difficult to understand, you just have to live with it.