Есть ли в C # слишком много языковых возможностей?

Это обсуждение, которое время от времени появляется в нашей команде. В то время как некоторые быстро освоили функции C # 3.0, другие придерживаются классических приемов.

Некоторые никогда не используют Linq, считают, что лямбда-выражения сбивают с толку, а yield «страшен». Иногда они с трудом понимают код, написанный людьми, использующими все новые функции. Можно просто сказать, что они не владеют языком и должны изучать его.

Но как тяжело изучать современный язык программирования? Каждый может решить проблемы, у каждого есть много других проблем, которые нужно решать каждый день, чем заботиться о более хороших способах его реализации. Обучение людей не бесплатно. С другой стороны, языковые функции могут сделать людей более продуктивными, а код - более понятным.

Вероятно, неполный список возможностей C #

классы, структуры, примитивные типы, массивы, бокс, интерфейсы, наследование (абстрактное, виртуальное, новое, запечатанное), свойства, обнуляемыеисключениядженерикимногопоточность, замкиотражениеделегаты, события, анонимные делегатыитераторылямбда-выраженияметоды расширенияLINQ

Скоро появится версия 4, включающая множество дополнительных функций.

Лично мне нравится почти каждая функция C #, и мне нравится короткий и красивый код, который я могу написать на этом языке. Но мне не нужно учить это с нуля.

Мне интересно ваше мнение и ваш опыт обучения или преподавания C #. Есть ли уже слишком много функций? Все еще отсутствуют важные функции? Делают ли языковые особенности язык более легким в использовании или трудным для изучения?

Пожалуйста: Нет ответов типа «Язык A лучше, чем язык B, потому что ...».

Ответы на вопрос(13)

Ваш ответ на вопрос