Есть ли в C # слишком много языковых возможностей? - PullRequest
35 голосов
/ 28 апреля 2009

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

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

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

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

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

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

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

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

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

Ответы [ 13 ]

0 голосов
/ 28 апреля 2009

Даже если я обычный пользователь C #; с большим опытом работы в Delphi, C ++ и Python; Я могу понять концепцию C # довольно легко. C # - правильно сбалансированный язык, на мой взгляд. Единственное раздражение в том, что я едва мог вспомнить достаточно синтаксиса (особенно связанного с Linq) в своей голове, чтобы производить код с сенсорной скоростью печати, как в Python. Мое предпочтение паскальскому синтаксису также может помешать мне. Однако с помощью всемогущего Visual Studio.NET Express это совсем не проблема.

Пока они предоставляют такой замечательный инструмент бесплатно, я считаю, что C # с VS.NET - одна из лучших доступных сред программирования.

0 голосов
/ 28 апреля 2009

Да, в C # do много функций, и это не мое мнение, это факт , это богатая платформа. Если кто-то захочет поспорить об этом и заявить, что этот язык не обладает множеством функций, пожалуйста, покажите мне язык, который обладает множеством функций, и объясните, почему он имеет гораздо больше функций, чем C #.

В любом случае, Я не вижу никаких проблем с этим . Вы всегда можете выбрать подмножество функций, которые вам подходят, и использовать их. нет ничего плохого в языке, богатом функциями, если функции используются правильно и не применяются в коде только потому, что они существуют.

0 голосов
/ 28 апреля 2009

Именно благодаря этим возможностям мы используем C # и делаем C # «современным». Если бы C # не предлагал классы, например - или многопоточность, кто-нибудь использовал бы это? Сборка - это пример языка, который действительно не имеет особенностей. Глупо легко учить как язык, но никто не хочет его использовать.

Языки, специфичные для небольшого домена, на самом деле являются крайностью в этом. Взять, к примеру, классическое регулярное выражение. Он получил кучу возможностей только для работы со строками. Если бы этого не было, кто бы это использовал? Эти особенности делают его таким мощным и выразительным. То же самое с более общими языками.

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

...