Не правда ли, название “Управляемый C++” вряд ли можно назвать логичным? Как можно сделать управляемым язык программирования, одно из основных достоинств которого – свободное манипулирование таким ресурсом программы, как адресное пространство? Тем не менее, от такой компании, как Microsoft, можно ожидать чего угодно. Поэтому не очень удивительно, что вместе с новой платформой .NET она предлагает нам и новое расширение языка C++ - Managed Extensions for C++, которое иногда именуют просто Managed C++ или даже MC++. Что касается последнего сокращения, то оставим его на растерзание другим ярым “поклонникам” этой компании.
Итак, “Управляемый C++”. Давайте попробуем вместе прояснить ситуацию и разобраться, насколько он управляем, что под этим понимается и в чём необходимость его появления.
Прежде всего, рассмотрим важные для нас особенности самой .NET Framework.
Попытки создания всеобъемлющих сред разработки и исполнения программ делаются уже давно, возьмём тот же Smalltalk, Lisp или, наиболее яркого представителя последнего времени, Java. Обычно такие среды именуются виртуальными машинами (Virtual Machine, VM), но Microsoft выбрала другое название - Common Language Runtime (CLR), что можно перевести как “одна на всех среда исполнения”. Это и отличает CLR от обычных VM – отсутствие привязки к одному конкретному языку программирования. И хотя иногда, говоря C#, подразумевают .NET и наоборот, C# - это всего лишь один из длинной линейки языков, поддерживаемых CLR. Естественно, в этом ряду не мог не появится и C++.
Среди основных задач подобных сред исполнения программ можно отметить следующие:
автоматическая сборка мусора, избавляющая программиста от необходимости помнить о таких мелочах, как вызовы деструкторов и освобождение памяти, занимаемой объектами;
гарантированная инициализация переменных, контроль типов и проверка допустимости значений аргументов во время исполнения, что, в свою очередь, позволяет защитить систему от неправильно работающих программ, тем самым, повышая её надёжность;
сокрытие деталей работы с элементами операционной системы, включая многозадачность, пользовательский интерфейс, управление ресурсами и т.п., что позволяет абстрагироваться от деталей работы в конкретной ОС и, в некоторых случаях, создавать переносимые приложения.
В свою очередь, C++ разрабатывался как универсальный язык, в том числе и для решения задач реального времени, низкоуровневого программирования и написания драйверов аппаратных устройств, в связи с чем применение в нём автоматической сборки мусора, неявной инициализации переменных и проверки допустимости значений аргументов является неоправданными из-за потери производительности.
Постоянные ссылки
При копировании ссылка на TeaM RSN обязательна!
Оставить комментарий
Вы должны войти, чтобы оставить комментарий.