Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OSISP Part 3.DOC
Скачиваний:
43
Добавлен:
11.05.2015
Размер:
360.45 Кб
Скачать
  1. Основные принципы построения архитектуры .Net.

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

CLR предоставляет исполняемому коду определенный набор сервисов. Например, CLR поддерживает создание и манипулирование потоками. Поэтому любой язык, который может использовать CLR, сможет использовать потоки.

Код, который нуждается в CLR во время выполнения, называется “управляемый” (managed) код. Ответственность за такие задачи как создание объектов и вызов методов возлагается на CLR. Код, который не нуждается в CLR, называется “неуправляемый” (unmanaged) код.

Common Language Runtime (CLR)

Автоматическое управление ресурсами

Выполнение на многих платформах

Согласующаяся модель программирования

Контроль типов

Интеграция языков

Общая система типов (Common Type System)

Assemblies - управляемые компоненты

Промежуточный Язык и JIT компилятор

  1. Сравнительная характеристика языков C# и С++.

Эти языки очень похожи своим синтаксисом и вообще многим. Но всё-таки есть существенные различия, о которых никак нельзя забывать.

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

Во-вторых, в C# реализованы новые типы данных, которых нет в С++.

В-третьих, нет такой широкой реализации наследования и шаблонов. Зато в C++ это широко применяется.

Думаю, что эти три пункта будут основными различиями. Помимо них есть небольшие различия в структурах, массивах и классах. Ну и небольшие расхождения в семантике и синтаксисе.

Результатом компиляции программы на C++ чаще всего является т.н. Native Code - набор бинарных инструкций непосредственно для микропроцессора (CPU). Такая программа имеет доступ к низкоуровневым ресурсам (железу), за небольшим исключением, накладываемым операционной системой. Контроль ресурсов осуществляется самой программой и операционной системой. Это накладывает большую ответственность на программиста, но и дает ему больше свободы действий. При условии, что руки не кривые и мозг на месте (что, вопреки самомнению большинства далеко не всегда так). Компиляция осуществляется, как правило, под конкретную платформу (ОС, архитектуру процессора).

На C# пишутся программы исключительно для Microsoft .NET Framework (аналог виртуальной машины Java от Microsoft) - необходимо, чтобы он был установлен на машине, где будет исполняться код (причем, именно та версия, под которую скомпилирована программа). Т.е. программа представляет собой не бинарный исполняемый код, а набор инструкций на MSIL (microsoft intermediate language) исполняемых средой CLR (common language runtime). Превращение MSIL в бинарный код, исполняемый процессором (еще одна компиляция) происходит в момент первого запуска .NET программы. Причем компиляция именно под платформу (OS, архитектуру процессора), на которой программа запускается. Выделение, контроль ресурсов и некоторых прав доступа осуществляются виртуальной машиной CLR. Тем не менее, производительность очень близка к производительности программ, являющими собой Native Code - ибо результатом второй компиляции тоже является Native Code, и именно он выполняется процессором. Тем не менее, контроль ресурсов со стороны CLR позволяет избежать многих типичных ошибок (например, утечки памяти). Платой за это являются чуть более высокие требования к ресурсам (впрочем, как и при использовании Java, Python и прочих виртуальных сред исполнения, а также универсальных фреймворков типа Qt, Gtk и прочих). Тем не менее, через CLR можно решить не все задачи - например, драйвер какого-нибудь устройства на .NET написать нельзя. Зато стоимость разработки бизнес-приложений на порядок меньше за счет готовых реализаций наиболее типичных вспомогательных задач программирования и меньших затрат на отладку приложений.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]