ИИ для программиста?
Почему не через ИИ? Спросил у чатика-гопоты про новый шарп - вот что он ответил
Без фанатизма Microsoft-евангелизма.
Это версия, которая, мягко говоря, вызывает ощущение усталости языка — не революции, а косметического ремонта старого дома. Разберёмся по сути.
💀 1. «Extension everything» — это шаг в сторону хаоса
C# 14 добавил extension-члены: теперь можно добавлять не только методы, но и свойства, индексаторы, даже статические члены.
На бумаге красиво. На деле — кошмар для читаемости и сопровождения.
- Ты смотришь на
user.Name, но понятия не имеешь, откуда это свойство — из класса? из extension? из какого namespace? - Поиск по коду превращается в ад: IDE ещё как-то справляется, а вот при ревью — без шансов.
- Расширения начинают использовать как «мини-наследование», нарушая инкапсуляцию.
C# всегда славился тем, что был читаемым и предсказуемым языком. Эти «расширения всего» превращают его в динамически-ведущийся мусорный контейнер, где члены могут прилететь откуда угодно.
🧩 2. «field» в свойствах — синтаксический костыль, не улучшение
Microsoft решила добавить новое «удобство»: ключевое слово field внутри get/set.
Типа чтобы писать меньше шаблонного кода. Проблема:
- Это ломает простоту модели свойств, где всегда было очевидно, где backing-field.
- Ключевое слово
field— зарезервированное слово, которое может конфликтовать с существующими именами. - Теперь у нас три способа записать одно и то же свойство. Ещё больше разнообразия ради разнообразия.
Это не улучшение, это введение новой неоднозначности в синтаксис ради мнимой экономии трёх строк.
🧠 3. Новые синтаксические трюки — косметика вместо содержания
Null-conditional assignment (obj?.Prop = val;) и nameof(List<>) — всё это мелкие, приятные, но абсолютно второстепенные фишки, которые решают микропроблемы, а не реальные боли разработчиков.
Пока язык тонет в куче сахарных добавок, серьёзные пропуски всё ещё остаются:
- Нет нормальных union-типов.
- Нет pattern-matching на уровне типов, как в Rust или Swift.
- Нет адекватных records с неизменяемостью по умолчанию.
- Нет поддержки value-based inheritance.
C# всё ещё живёт в 2010-х, пока Kotlin, Swift, Zig и Rust бегут дальше.
⚙️ 4. Compound-assignment операторы — привет, магия и неопределённость
Теперь можно переопределять +=, -=, *=, и т.д.
Идея вроде хорошая, но на практике — это минное поле для логики.
- Поведение
x += yтеперь может вообще не соответствоватьx = x + y. - Код становится непредсказуемым и теряет декларативность.
- Отладка усложняется — откуда берётся новое значение, теперь непонятно без заглядывания в перегрузку.
То есть мы ради «эффективности» пожертвовали очевидностью.
Типичная ошибка C# последних лет — путать выразительность с магией.
🕳️ 5. Microsoft всё ещё не решилась упростить сам язык
C# 14 — это очередная надстройка над надстройкой.
Каждая новая версия добавляет ещё один слой синтаксического мусора, не убирая ничего старого.
- У нас уже три способа объявить метод, три способа задать свойство, три способа объявить лямбду.
- Вместо консолидации идей — постоянное добавление исключений и sugar’а.
- Новый разработчик, глядя на современный C#, просто офигевает:
«А почему тут можно, а тут нельзя?»,
«А почему это работает только в expression-bodied функции?»
Это уже не язык, а музей решений из разных эпох .NET.
📉 6. Отсутствие смелости и инноваций
.NET-команда идёт по пути минимального риска.
Вместо того чтобы сказать: «C# нуждается в перезагрузке» — они выпускают мелкие правки.
C# 14 ощущается не как новая версия, а как сервис-пак с косметикой.
И это особенно разочаровывает на фоне конкурентов:
- Kotlin уже давно имеет sealed-иерархии, data-классы, flow и inline-типы.
- Rust предлагает паттерн-матчинг, ownership и zero-cost abstractions.
- Swift движется к DSL и value semantics.
А C# всё ещё живёт на костылях ref struct, readonly, scoped и прочем синтаксическом Frankenstein’е.
☠️ Итог: язык перегружен, уставший и теряющий фокус
C# 14 — это не развитие, а удержание статуса кво.
Он всё больше напоминает Java времён 2015 года — громоздкий, противоречивый, медленно эволюционирующий язык, который боится сам себя упростить.
Проблема не в том, что новые фичи плохие — проблема в том, что они ничего не меняют.
Вместо решительных архитектурных шагов — косметическая правка синтаксиса.
Zurück