Шаг 2.
Язык программирования C#. Начала
Введение. Особенности языка C#

    На этом шаге мы кратко перечислим особенности этого языка.

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


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

    Кроме собственно преимуществ языка С#, немаловажно и то, что язык поддерживается компанией Microsoft. Поэтому он идеально подходит, чтобы писать программы для выполнения под управлением операционной системы Windows.


Операционной системой Windows и технологией .Net Framework компании Microsoft область применения языка C# не ограничивается. Существуют альтернативные проекты (такие, например, как Mono), позволяющие выполнять программы, написанные на языке С#, под управлением операционных систем, отличных от Windows. Вместе с тем мы будем исходить из того, что используются "родные" средства разработки и операционная система Windows.

    Как уже отмечалось, язык C# является неотъемлемой частью технологии (или платформы) .Net Framework. Основу платформы .Net Framework составляет среда исполнения CLR (сокращение от Common Language Runtime) и библиотека классов, которая используется при программировании на языке С#.


Платформа .Net Framework позволяет использовать и иные языки программирования, а не только C# - например, C++ или Visual Basic. Возможности платформы .Net Framework позволяют объединять "в одно целое" программные коды, написанные на разных языках программирования. Это очень мощная технология, но для нас интерес представляет написание программных кодов на языке С#. Именно особенности и возможности языка C# мы будем обсуждать далее.

    При компилировании программного кода, написанного на языке С#, создастся промежуточный код. Это промежуточный код реализован на языке MSIL (сокращение от Microsoft Intermediate Language). Промежуточный код выполняется под управлением системы CLR. Система CLR запускает JIT-компилятор (сокращение от Just In Time), который, собственно, и переводит промежуточный код в исполняемые инструкции.


Файл с программным кодом на языке C# сохраняется с расширением .cs. После компиляции программы создается файл с расширением .ехе. Но выполнить этот файл можно только на компьютере, где установлена система .Net Framework. Такой код называется управляемым (поскольку он выполняется под управлением системы CLR).

    Описанная нетривиальная схема компилирования программ с привлечением промежуточного кода служит важной цели. Дело в том, что технология .Net Framework ориентирована на совместное использование программных кодов, написанных на разных языках программирования. Базируется эта технология на том, что программные коды с разных языков программирования "переводятся" (в процессе компиляции) в промежуточный код на общем универсальном языке. Проще говоря, коды на разных языках программирования приводятся "к общему знаменателю", которым является промежуточный язык MSIL.


Программы, написанные на Java, тоже компилируются в промежуточный байт-код. Байт-код выполняется под управлением виртуальной машины Java. Но по сравнению с языком C# имеется принципиальное отличие. Байт-код, в который переводится при компиляции Java-программа, имеет привязку к одному языку программирования - языку Java. И в Java схема с промежуточным кодом нужна для обеспечения универсальности программ, поскольку промежуточный байт-код не зависит от типа операционной системы (и поэтому переносим). Особенность операционной системы учитывается той виртуальной машиной Java, которая установлена на компьютере и выполняет промежуточный байт-код. Промежуточный код, который используется в технологии .Net Framework, не привязан к конкретному языку программирования. Например, что при компиляции программы на языке С#, что при компиляции программы на языке Visual Basic получаются наборы инструкций на одном и том же промежуточном языке MSIL. И нужно это, еще раз подчеркнем, для обеспечения совместимости разных программных кодов, реализованных на разных языках.

    Весь этот процесс для нас важен исключительное познавательной точки зрения. Более принципиальными являются вопросы, касающиеся особенностей собственно языка С#.

    Первое, что стоит отметить: язык C# полностью объектно-ориентированный. Это означает, что даже самая маленькая программа на языке C# должна содержать описание хотя бы одного класса.


Здесь есть методологическая проблема. Состоит она в том, что неподготовленному читателю сложно воспринимать концепцию ООП сразу, без предварительной подготовки. Мы найдем выход в том, чтобы использовать определенный шаблон при написании программ. Затем, по мере знакомства с языком С#, многие моменты станут простыми и понятными.

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

    Знакомым с языками программирования C++ и/или Java будет полезно узнать, что в языке С#, как и в языке C++, используются пространства имен, указатели, существует переопределение операторов. Также в С#, как и в Java, имеются интерфейсы, объекты реализуются через ссылки, используется система автоматической "уборки мусора". А еще в C# используются делегаты, концепция которых идеологически близка к концепции указателей на функции в C++. Массивы в C# больше напоминают массивы Java, но вообще в C# они достаточно специфичные. Индексаторы в C# позволяют индексировать объекты - подобный механизм, основанный на переопределении оператора "квадратные скобки", есть в C++. Свойства, которые используются в С#, представляют собой нечто среднее между полем и методом, хотя, конечно, больше напоминают поле с особым режимом доступа.

    Есть в языке C# и "классические" механизмы, характерные для большинства языков, поддерживающих парадигму ООП. Мы познакомимся с тем, как на основе классов и объектов в языке С# реализуется инкапсуляция, узнаем, что такое наследование и как в C# используется полиморфизм. Будет много других тем и вопросов, которые мы изучим.

    На следующем шаге мы рассмотрим программное обеспечение, используемое для написания программ на этом языке.




Предыдущий шаг Содержание Следующий шаг