Главная » Просмотр файлов » Б. Страуструп - Дизайн и Эволюция C++. 2006

Б. Страуструп - Дизайн и Эволюция C++. 2006 (1160775), страница 37

Файл №1160775 Б. Страуструп - Дизайн и Эволюция C++. 2006 (Б. Страуструп - Дизайн и Эволюция C++. 2006) 37 страницаБ. Страуструп - Дизайн и Эволюция C++. 2006 (1160775) страница 372019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 37)

Обзор возможностей Вот сводка возможностей С++, зафиксированных в ноябре 1994 г. в рабочих документах комитета на заседании, состоявшемся в Валли Фордж: сз возможности, описанные в АКМ (см. раздел 53); сз представление европейского набора символов (см. раздел 6.5.3.1); щ ослабление правила для типа возвращаемого значения в замещающих функциях (см. раздел 13.7); щ идентификация типов во время исполнения (см. раздел 14.2); а объявления в условиях (см. раздел 3.11.5.2); а перегрузка, основанная на перечислениях (см. раздел 11.7.1); й определенные пользователем операторы выделения и освобождения памяти для массивов (см. раздел 10.3); щ опережающие объявления вложенных классов (см.

раздел 13.5); а пространства имен (см. главу 17); а ключевое слово пшс аЬ1е (см. раздел 13.3.3); сз новый синтаксис приведения типов (см. раздел 14.3); а тип Ьоо1 (см. раздел 11.7.2); щ явное инстанцирование шаблонов (см. раздел 15.10.4); а явная спецификация аргументов в вызовах шаблонов функций (см. раздел 15.6.2); а шаблоны-члены (см. раздел 15.9.3); сз шаблоны классов как аргументы шаблонов (см. раздел 15.3.1); а возможность инициализировать константные статические члены интегральных типов константным выражением внутри объявления класса; а явные конструкторы (см. раздел 3.6.1); а статическая проверка спецификаций исключений (см.

раздел 16.9). Глава 6. Стандартизация Не пытайся перещеголять меня я эксцентричности. Зафод Библброкс 6.1. Что такое стандарт? В умах программистов царит путаница относительно того, что представляет собой стандарт и каким он должен быть. Вот один из идеалов: в стандарте полно и точно определяется, какие программы корректны н какова семантика каждой корректной программы.

В действительности такое определение не может и не должно быть идеалом для языков, которые спроектированы для работы с самыми разнообразными аппаратными архитектурами. Для подобных языков важно, чтобы определенные аспекты зависели от реализации. Таким образом, стандарт часто описывают как «контракт между программистом и разработчиком компилятора». Он определяет не только «корректный» исходный код, но и свойства, на которые программист может полагаться всегда, и зависящие от реализации. Например, в языках С и С++ разрешается объявлять переменные типа Бпс, но стандарт ничего не говорит о размере Бпс, кроме того что он не меньше 16 бит.

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

Многие члены комитета акцентируют свое внимание на технических вопросах языка, поэтому основные проблемы, связанные с тем, чту же именно стандартизируется, вынужден решать редактора комитета. К счастью, нашего первого редактора, Джонатана Шапиро, такие материи интересовали. Джонатан ушел с поста редактора, передав его Эндрю Кенигу. Но он и поныне остается членом комитета. Еще один интересный (то есть трудный) вопрос — до какой степени допустимы реализации, включающие возможности, не специфицированные в стандарте. В конце концов, некоторые расширения действительно необходимы тем или иным группам внутри сообщества пользователей С++.

Так, есть компьютеры, аппаратно поддерживающие некоторые механизмы параллельности, имеющие ограничения на адресацию или специализированную векторную аппаратуру. Мы не можем перегружать «С++ для всех» средствами, необходимыми для поддержки этих несовместимых между собой специальных расширений, поскольку зачастую они влекут за собой издержки лля всех пользователей. Но было бы неправильно запрещать разработчикам компиляторов для таких узких групп включить необходимые им расширения, строго придерживаясь стандарта во всем остальном. С другой Что такое стандарт? ИВВИИИЙП стороны, я как-то раз видел «расширение», разрешающее доступ к закрытым членам класса из любой функции в программе, то есть разработчик не счел важной реализацию контроля доступа. Такую вольность я не считаю разумной.

Сформулировать стандарт так, чтобы расширения первого вида были возможны, а второго — нет, — нетривиальная задача. Также программа должна иметь возможность распознать нестандартные расширения. Иначе, проснувшись однажды утром, программист может обнаружить, что важнейший код зависит от расширения, предоставленного конкретным компилятором, а стало быть, сменить поставщика так просто уже не удастся. Я вспоминаю, как, будучи еще студентом, был приятно удивлен тем, что на нашем университетском компьютере установили «расширенный Еогггап» с некоторыми очень симпатичными возможностями. Но каково же было удивление, когда я понял, что все мои программы могут работать только на машинах серии СРС6000.

Итак, стопроцентное соответствие стандарту программ, написанных на С+«, не является ни достижимым, ни желательным илеалом. Программы, соответствующие стандарту, необязательно полностью переносимы, поскольку некоторые аспекты могут зависеть от компилятора. Но большинство из них все же переносимо. Например, абсолютно законная программа на С или С++ может изменить семантику, если полагается на результаты встроенной операции взятия остатка от деления в применении к отрицательным числам.

Кроме того, реальные программы обычно зависят от библиотек, предоставляющих сервисы, которые в некоторых системах просто отсутствуют. Например, программа, написанная под М1сгозоц '««1пг1овв, вряд ли будет без изменений работать под Х '»«чпг1отчз, а программу, в которой используются базовые классы Вог1апг1, не удастся без труда перенести на платформу МасАрр. Переносимость реальной программы определяется тем, насколько хорошо при ее проектировании были инкапсулированы зависимости от компилятора и окружения, а не только строгим соответствием немногим простым правилам, изложенным в стандарте. Б.1.1. Детали реализации Чуть ли не каждую неделю поступают просьбы стандартизировать такие аспекты, как расположение в памяти таблицы виртуальных функций, схему кодирования имен при типобезопасной компоновке или отладчик.

Олнако все зто относится к качеству компилятора или к деталям реализации, которые лежат за пределами стандарта. Пользователи желают, чтобы библиотеки, откомпилированные одним компилятором, можно было связать с кодом, откомпилированным другим, чтобы двоичные файлы переносились с одной архитектуры на другую и чтобы отладчик не зависел от того, какой компилятор использовался при создании отлаживаемой программы. Однако «узаконивание» наборов команд, интерфейсов операционных систем, форматов отладчиков, соглашений о вызове и хранении объектов в памяти находится далеко за рамками возможностей группы по стандартизации языка программирования.

Такая универсальная стандартизация, наверное, даже и нежелательна; она затормозит прогресс в области машинных архитектур и операционных систем. Если пользователю нужна полная независимость от аппаратуры, систему следует НИИИИИИВ Стандартизация б.1.2. Тест на реалистичность Помимо многих формальных ограничений, которыми связан комитет по стандартизации, есть одно неформальное, но важное для практики.

На ряд стандартов потенциальные пользователи просто не обращают внимания. Например, практически забыты стандарты Рааса! и Рааса!2. Для большинства программистов на Рааса! само название языка означает расширенный диалект, введенный в обиход компанией Вог!апо. Язык, определенный стандартом Рааса!, не предоставлял средств, которые пользователи считали необходимыми, а Рааса!2 появился тогда, когда утвердился другой, неформальный «промышленный стандарты Еще одно настораживающее наблюдение: в среде ПХ1Х по-прежнему работают на Ке К С; АХБ1 С только борется за это сообщество. Некоторые пользователи не видят в АХБ1/1БО С таких технических преимушеств, которые оправдали бы краткосрочные неудобства при переходе. Даже к не вызывающему возражений стандарту приходится привыкать.

Для этого он должен быть принят вовремя и отвечать насущным потребностям. Попытка превратить С++ в «идеальный язык» или выпустить стандарт, не допускающий неверного истолкования никем, даже самым безграмотным человеком, — задача, непосильная ни для комитета (см. раздел 3.13), ни для иной организации, работающей на удовлетворение потребностей большого сообщества пользователей (см. раздел 7.1). 6.2. Работа комитета Для стандартизации С++ образовано несколько комитетов. Первый и самый крупный — комитет АХБ1-Х3116, сформированный Американским национальным институтом стандартизации (АХБ1). За этот комитет отвечает Ассоциация производителей компьютеров и оборудования для бизнеса (СВЕМА), поэтому он работает по установленным ею правилам.

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

Характеристики

Тип файла
DJVU-файл
Размер
2,78 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6439
Авторов
на СтудИзбе
306
Средний доход
с одного платного файла
Обучение Подробнее