программного кода получается промежуточный псевдокод.
ПРИМЕЧАНИЕ Промежуточный псевдокод называется общим промежуточным язы-
ком, или CIL — сокращение от Common Intermediate Language.
Псевдокод выполняется под управлением специальной системы, которая
является составной частью платформы .NET Framework и называется
CLR — сокращение от Common Language Runtime. Система CLR, в свою
очередь, для выполнения промежуточного псевдокода вызывает специ-
альный встроенный в среду компилятор. Компилятор переводит псевдо-
код в исполнительный код. Делается это непосредственно перед выпол-
нением программы, что существенно оптимизирует время выполнения
кода.
Особенности и идеология C# 11
ПРИМЕЧАНИЕ Ситуация несколько напоминает процесс компиляции и выполнения
Java-кодов. При компиляции Java-программ также получается не ис-
полнительный код, а промежуточный байт-код, который выполняет-
ся виртуальной Java-машиной (JVM как сокращение от Java Virtual Machine) — аналогом системы CLR. Однако за внешней схожестью здесь
имеются существенные принципиальные различия. Обратим внимание
читателя на два обстоятельства. Во-первых, необходимость компили-
рования программ в промежуточный код в Java обусловлена желанием
универсализации программных кодов, в то время как в .NET Framework (и C# как базового языка платформы) «появление» промежуточного
кода имеет целью «свести к общему знаменателю» программные моду-
ли, написанные на разных языках. Как следствие промежуточный код
CIL не привязан к какому-то конкретному языку программирования
или определенному типу процессора. Во-вторых, наличие встроенного
эффективного компилятора в .NET Framework практически нивелирует
неэффективность времени исполнения, связанную с использованием
промежуточного кода (вместо исполнительного).
Все вышесказанное характеризует общее направление развития языка C#.
Для нас из всего вышеизложенного важным является то, что мы неявно
в этой книге будем предполагать, что составляемые программные коды
предназначены для исполнения в операционной системе Windows.
Для читателей, знакомых с языками Java и (или) C++, несколько слов
хочется сказать и о том, что отличает/объединяет языки C++ и Java, с
одной стороны, и язык C# с другой. Общую генелогию этих языков мы
кратко упоминали. У всех трех языков достаточно схожий синтаксис, равно как и большинство управляющих инструкций (таких, напри-
мер, как операторы цикла или условные операторы). Язык C#, так же
как и Java, полностью объектно-ориентированный. Самая маленькая
и безобидная программа, написанная на C#, содержит хотя бы один
класс. У языков C# и Java достаточно схожие объектные модели —
в плане реализации классов и объектов. Вообще, в языке C# собрано
все лучшее, что есть в C++ и Java, и по большей части устранены недо-
статки этих языков (хотя, конечно, до полной виктории очень далеко).
Например, в C#, так же как в C++, используется концепция пространства
имен. В C# можно использовать указатели и переопределять опера-
торы — правда, не на таком уровне, как в C++, но в Java этого вообще
нет. В C# есть делегаты, которые играют роль, аналогичную указателям
на функции в C++. Вместе с тем в C# объекты передаются по ссылке
(как в Java), используются интерфейсы (как в Java), используется
аналогичная Java система «сборки мусора» (автоматическое удаление
неиспользуемых объектов) и система обработки исключительных си-
туаций. Есть в C# и целый набор достаточно оригинальных и полезных
новшеств, с которыми мы, безусловно, познакомимся.
12
Вступление. Язык программирования C#
Программное обеспечение
Это дело очень интересное. И простое.
Из к/ф «Приключения Шерлока Холмса
и доктора Ватсона. Знакомство»
С «идеологией» и «концепцией» мы более-менее разобрались. Все это, ко-
нечно, хорошо, но пора перейти к вещам более практичным. Ведь главный
вопрос остался неразрешенным: что нужно сделать, чтобы создать про-
грамму на C#? Или, более конкретно, какое программное обеспечение для
этого нужно? Для ответа на этот вопрос напомним, из чего, собственно, состоит процесс создания программы. Состоит он, в самых общих чертах, из следующих этапов.