Читайте также:
|
|
.NET платформа упрощает разработку приложений и повышает надежность кода. В частности, она обеспечивает автоматическое управление временем жизни объектов, нейтральные к языкам библиотеки классов и пересекающие границы языков наследование, обработку исключений и отладку.
CLR предоставляет исполняемому коду определенный набор сервисов. Например, CLR поддерживает создание и манипулирование потоками. Поэтому любой язык, который может использовать CLR, сможет использовать потоки.
Код, который нуждается в CLR во время выполнения, называется “управляемый” (managed) код. Ответственность за такие задачи как создание объектов и вызов методов возлагается на CLR. Код, который не нуждается в CLR, называется “неуправляемый” (unmanaged) код.
Common Language Runtime (CLR)
Автоматическое управление ресурсами
Выполнение на многих платформах
Согласующаяся модель программирования
Контроль типов
Интеграция языков
Общая система типов (Common Type System)
Assemblies - управляемые компоненты
Промежуточный Язык и JIT компилятор
4. Сравнительная характеристика языков 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 тоже существуют аналогичные мегаинструменты) - это тоже очень сильно упрощает, а, следовательно, удешевляет себестоимость разработки.
Дата добавления: 2015-01-30; просмотров: 92 | Поможем написать вашу работу | Нарушение авторских прав |