Есть ли в C # слишком много языковых возможностей?
Это обсуждение, которое время от времени появляется в нашей команде. В то время как некоторые быстро освоили функции C # 3.0, другие придерживаются классических приемов.
Некоторые никогда не используют Linq, считают, что лямбда-выражения сбивают с толку, а yield «страшен». Иногда они с трудом понимают код, написанный людьми, использующими все новые функции. Можно просто сказать, что они не владеют языком и должны изучать его.
Но как тяжело изучать современный язык программирования? Каждый может решить проблемы, у каждого есть много других проблем, которые нужно решать каждый день, чем заботиться о более хороших способах его реализации. Обучение людей не бесплатно. С другой стороны, языковые функции могут сделать людей более продуктивными, а код - более понятным.
Вероятно, неполный список возможностей C #
классы, структуры, примитивные типы, массивы, бокс, интерфейсы, наследование (абстрактное, виртуальное, новое, запечатанное), свойства, обнуляемыеисключениядженерикимногопоточность, замкиотражениеделегаты, события, анонимные делегатыитераторылямбда-выраженияметоды расширенияLINQСкоро появится версия 4, включающая множество дополнительных функций.
Лично мне нравится почти каждая функция C #, и мне нравится короткий и красивый код, который я могу написать на этом языке. Но мне не нужно учить это с нуля.
Мне интересно ваше мнение и ваш опыт обучения или преподавания C #. Есть ли уже слишком много функций? Все еще отсутствуют важные функции? Делают ли языковые особенности язык более легким в использовании или трудным для изучения?
Пожалуйста: Нет ответов типа «Язык A лучше, чем язык B, потому что ...».