С C# все будет хорошо, и Страуструп тут не при чем
Меня очень возмутил вчерашний пост Что будет с C# и причём здесь Страуструп? Конечно, каждый имеет право на мнение, но автор использует множество манипулятивных техник, таким образом негативно влияя на мнение молодых читателей. Да и сам текст является маркетинговым переводом, что меня сильно удивляет. Потому и захотелось развенчать мифы из данной статьи.
Не поймите меня неправильно, я не фанбой C#. Буквально недавно в подкасте DotNet & More №53 C# 10 и не только я жаловался на то, что C#10 не впечатляет. Но в своих высказываниях необходимо стараться быть хоть немного объективным. Или, хотя бы, иронизировать над необъективностью.
Разбор оригинальной статьи
В первую очередь, давайте рассмотрим манипулятивные техники, используемые автором оригинальной статьи. Очень полезно выявлять их, так как именно манипуляции вызывают у нас эмоции и побуждают совершать необдуманные действия:
Оценочное суждение: "непонятный код", "хакерское исправление"
Бессмысленные, но колкие фразочки: "Я не знаю более эффективного способа, чем расползание функциональности, чтобы уничтожить язык программирования"
Неточное сравнение: путь из C в C++, современный C++ (с тяжелым наследием Александреску) совершенно не похож на C#. Сравнение напоминает "тарелка плоская, лежит на земле, значит земля плоская".
Ведение логических цепочек на основе изначально слабой гипотезы: если усомниться, что сложность языка программирования ведет к его краху, то все доводы теряют силу
Странная и однобокая статистика
Я думаю мне удалось Вас убедить, что изначальная статья является не сколько техническим постом, сколько попыткой манипуляции. Надеюсь, редакторы блога не будут допускать подобной ошибки в будущем.
Мифы
Далее я хочу попробовать развенчать часть мифов. Будет много личного мнения, так что не судите строго.
Сложность языка не так сильно влияет на порог входа. Я опросил множество молодых ребят и не встретил ни одно джуна, который бы жаловался на сложность синтаксиса. Для них фундаментальные понятия, типа DI, модульного тестирования, оказываются гораздо сложнее, нежели оператор switch
А вот среди "вечных мидлов" встречается достаточно людей, "остановившихся в развитии" на C# 5 или 6. Под "вечными мидлами" я подразумеваю программистов, которые в силу опыта (5-10 лет) уже не могут считаться джунами, но по квалификации не дотягивают до сеньоров.
P.S. автор изначальной статьи https://www.linkedin.com/in/andrewzuo/ имеет всего 2 года опыта работы с C#. Так что можно было бы как-то экстраполировать вышесказанное, но мы не будем этого делать.
Разобраться с новыми синтаксическими конструкциями очень помогает IDE. И VisualStudio, и Rider подсвечивают "новые" способы выполнить задачу короче и яснее.
Автор пишет "C# умирает, Microsoft убивает его, добавляя случайные штуки, о которых никто не просил". Но это не так! Начиная с C#6 все фичи предлагаются сообществом. Более того, сам процесс выбора proposal champion открытый и, более менее, независимый.
Автор пишет "Просто бросьте в это макрос", создавая ощущение неструктурированности развития C#. Только если бы он посмотрел в сторону F#, Scala и других ФП, то лучше понял вектор развития.
P.S. не очень корректно обвинять автора в узколобости, так его основной опыт работы с C# в контексте Unity, а для игр очень плохо подходят концепции функционального программирования
Заключение
Уже лет 10 я слышу из каждого утюга, что C# умирает. В какой-то момент так и происходило, но .Net Core дал технологии новую жизнь.
У нас есть уникальная возможность работать с библиотеками без legacy соплей. Сравните что сейчас в Spring и AspNet, чтобы понять, кто тут настоящий смузи хипстер. Спросите у Kotlin разработчиков, как много врапперов вокруг стандартных библиотек они пишут. Писать же на современном .Net очень приятно!
C# не на хайпе? Мы были свидетелями, когда все ломанулись в php, потом в ruby, потом в node.js, сейчас в go. И часто они оставляли за собой не очень приятный код. Вам не кажется, что это все были одни и те же люди?
10 лет назад .Net был популярен, по большей части, благодаря Desktop разработке. Но падение популярности формочек лишь немного пошатнуло позиции .Net, Backend разработка растет и тащит.
Важно найти свое место. Ни одна технология не сможет быть универсальной, C++ занял свою нишу, и даже Rust не может его ощутимо подвинуть. Ниша C# это Backend, и фичи выходят для Backend разработчиков.
Иногда происходят нелогичные вещи: Java для BigData, C# для GameDev (в Unity он смотрится откровенно плохо), Go для бизнес логики. Это невозможно предсказать, сложно понять, приходится с этим просто жить.