C#.NET: Обзор языковых возможностей

Вместе с выпуском новой платформы .NET компания Microsoft представила новый язык, идеально подходящий для новой платформы - C# (читается "си шарп"). Станет ли он для Вас любимым и единственным или одним из постоянно используемых решать Вам, так как .NET дает такую возможность. Но на мой взгляд любой .NET программист должен знать C#, как язык специально созданный для работы с этой платформы.

Тем более, что в нем многие найдут любимые черты. Он близок и Delphi, и C++, и Java программистам.

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

Публикация рассчитана на инженеров, знакомых с основными понятиями современных.

Основные характеристики языка.

Коротко упомянем про некоторые из возможностей работы с языком. Подробнее с синтаксисом и примерами использования этих возможностей Вы можете ознакомиться на сайте www.dotsite.spb.ru . В языке для работы с событиями и обратными вызовами представлена новая концепция объектно-ориентированно и безопасной с точки зрения системы типов ссылки на функцию - "делегат". Именно эта концепция позволяет описывать события C# компонента без возвратных интерфейсов и дополнительных усилий, достаточно использовать ключевое слово event.Индексаторы и свойства органично дополняют события до создания описываемого сигнатурой компонента. Я постарался сделать эту статью как можно короче, чтобы люди, имеющие минимальный запас времени могли получить представление о C#. Для дальнейшего знакомства с языком, рекомендуем публикации на www.dotsite.spb.ru, а затем и спецификацию языка.

Программиста, привыкший к платформе Майкрософт, может представить себе C# как промежуточный вариант между C++ и Visual Basic, если рассматривать сложность языковых конструкций и возможности языка.

C# имеет C стиль синтаксиса (для управляющих конструкций, блоков кода, описания сигнатуры методов и др.), много общего с Java (отсутствие множественного наследования и шаблонов, наличие сборщика мусора) и Дельфи (ориентированность на создание компонент), в то же время имеет и свой колорит.

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

C# объектно-ориентированный язык, как и вся платформа .NET. Более того, это язык, ориентированный на написание компонент. C# создан для программирования в управляемой среде с присутствующим сборщиком мусора, но позволяет писать и неуправляемый (unmanaged) код.

Цельность концепции видна, скажем в реализации упаковки/распаковки. Это позволяет рассматривать все типы (даже примитивные) как объекты, что разрешает многие проблемы дизайна приложений.

При создании языка рассматривалась не только простота написания приложений, но и их поддержки - в связи с чем в язык включили поддержку XML комментариев и контроля версий. Настоящий подарок для программистов.

Помимо сборщика мусора и безопасности работы с типами для избежания ошибок в языке также применяется автоматическая инициализация переменных. Все типы, которые размещаются в стеке (value types, к которым относятся примитивные типы, структуры и прочие наследники класса ValueType) инициализируются нулями. Объекты остальных типов размещаются в куче, доступ к ним осуществляется по объектной ссылке, и ссылки эти инициализируются в значение null (которая говорит, что данная ссылка не имеет ассоциированного объекта в куче).

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

Приятности.

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

Работа с атрибутам позволяет использовать COM, COM+ и DLL в C# приложениях, работающих в среде .NET.
Перечисления позволяют обезопасить работу с перечисляемыми типами.

Реализация структур как типов, работа с которыми идет по значению, вкупе с возможностью использовать не только вложенные массивы (как в Java), но и многомерные позволяет оптимизировать производительность приложений.

Выбор.

При написании стандартных приложений под .NET трудно подобрать более подходящий язык, если Вы привыкли к синтаксису C-подобных языков.

Если Вы хотите использовать шаблоны (templates, полиморфные типы), то сейчас Вам придется обратиться к C++. С другой стороны, шаблоны скорее всего будут реализованы во второй версии общеязыковой среды выполнения и C#.

Если Вы не хотите отказываться от возможностей использования множественного наследования, то Вам стоит обратить внимание на Eiffel#.

Если Вы привыкли к синтаксису и простоте бейсика, Ваш выбор наверняка падет на Visual Basic.NET.

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


С уважением, Андрей Филёв.
Microsoft Certified Solution Developer

 
« Предыдущая статья   Следующая статья »