Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Избыточные и опасные возможностиСодержание книги Поиск на нашем сайте
Гарантия некорректности Из-за слабой системы типов программист оказывается волен легко нарушить заданную в конкретном случае дисциплину программирования. Например, хотя модификатор const предназначен для повышения предсказуемости поведения (что должно облегчить доказательство корректности, и, как следствие, расширить возможности оптимизации), но модификатор mutable предназначен именно для принудительного разрешения изменения состояния внутри константного объекта. Это значит, что код сторонней библиотеки на С++ может содержать изменяемое состояние вопреки любым попыткам назначить ему извне свойство константности. Более того, допускается динамически удалить атрибут const с константного объекта, превращая его в леводопустимый (L-value). В частности, совершенно корректной с т.з. семантики языка является команда присваивания const_cast< имя_класса* >(this) = NULL; — хотя она однозначно приводит к фатальной ошибке времени исполнения на нижеследующей команде. Сама по себе явная декларация в спецификации языка подобных возможностей делает попытки формальной верификации бессмысленными. Неконтролируемая макроподстановка Средства макроподстановки Си (#define) являются сколь мощным, столь же опасным средством. Они сохранены в C++ несмотря на то, что для решения всех[ источник? ] задач, для которых они были предусмотрены в Си, в С++ были предоставлены более строгие и специализированные средства — шаблоны, перегрузка функций, inline-функции, пространства имён, более развитая типизация, расширение применения модификатора const, и др. В унаследованных от Си стандартных библиотеках много потенциально опасных макросов[22]. Шаблонное метапрограммирование также порой совмещается с использованием макроподстановки для обеспечения т. н. «синтаксического сахара». Неэкономная экономия В контексте задач, для решения которых разработан Си, считается опасным расширение его до С++, и не только из-за искажения имён (name mangling), увеличения библиотеки времени исполнения (RTL) и раздувания кода использованием шаблонов (см. раздел Вычислительная производительность), но в большей степени из-за присущей С++ идеологии программирования. Из того, что Си является подмножеством С++, вообще говоря, не следует, что С++ должен быть однозначно лучше, чем Си; и противники С++ утверждают, что в данном случае расширение возможностей системы привело к серьёзному ухудшению её свойств. Например, Линус Торвальдс придерживается такого мнения: С++ — кошмарный язык. Его делает ещё более кошмарным тот факт, что множество недостаточно грамотных программистов используют его, до такой степени, что оказывается намного проще выкинуть его как мусор. Откровенно говоря, даже если нет *никаких* причин для выбора Си, кроме того чтобы держать С++-программистов подальше — то одно это уже будет достаточно веским основанием для использования Си. — Линус Торвальдс, [мнения 3] Более эффективными и качественными инструментами в этой сфере могут быть другие потомки Си (см. раздел Влияние и альтернативы).
|
||||
Последнее изменение этой страницы: 2016-12-12; просмотров: 172; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.12.148.180 (0.006 с.) |