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

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

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

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

В свое время я рассмотрел и отверг такие альтернативы семантике языка и технологии компиляции. Непосредственный предшественник С++ — Срге — являлся довольно традиционным препроцессором, Компилятор Стгопт которому были неизвестны синтаксические конструкции, области действия и правила контроля типов С.

Это явилось источником многих проблем как в определении, так и при использовании языка. Я твердо решил не сталкиваться больше с такими трудностями в пересмотренном языке и его реализации. С++ и С(гопг проектировались вместе. Определение языка и технология компиляции, несомненно, были связаны друг с другом, но не так тривиально, как думают некоторые.

3.3.2. Синтаксический анализ С++ В 1982 г., в начале планирования С(гопс я хотел воспользоваться методом рекурсивного спуска, поскольку опыт написания таких синтаксических анализаторов у меня уже был. Они легко обеспечивают хорошую диагностику ошибок. Кроме того, мне импонировала идея иметь под рукой всю мощь универсального языка программирования, когда в синтаксическом анализаторе необходимо принимать те или иные решения. Но, будучи добросовестным молодым ученым, я спросил совета у экспертов. В то время в Центре исследований по вычнслителъной технике как раз работали Эл Ахо (А! Апо) и Стив Джонсон.

Они-то, главным образом Стив, и убедили меня, что: о вручную синтаксические анализаторы уже никто ие пишет; о это пустая трата времени; и при таком подходе неизбежно получится нечто непонятное, что даже сопровождать невозможно; о применяемая в подобном анализаторе техника восстановления после ошибок нссистематична, а значит, и ненадежна. Правильным приемом, по мнению вышеупомянутых специалистов, было бы использование 1 А1.В(1)-генератора синтаксических анализаторов, поэтому я принял на вооружение написанный Элом и Стивом гАСС [АЬо,19861.

Для большинства проектов такой выбор был бы идеальным. Это годилось бы почти для любого проекта, связанного с написанием экспериментального языка с нуля. Но, оглядываясь назад, я понимаю, что именно для С++ этот выбор оказался роковой ошибкой. С-ь+ был не экспериментальным языком, а почти совместимым нздмножеством С, а в то время еще никому не удалось написать для С 1А(.В(1)-грамматику. Такая грамматика для АХ81 С была построена Томом Пеннелло (Тош РеппеПо) спустя примерно полтора года, то есть слишком поздно. Даже созданный Джонсоном РСС вЂ” лучший из всех тогдашних компиляторов С— был не совсем корректен в некоторых деталях, которые для синтаксического анализатора С++ являлись весьма существенными. В частности, в РСС неправильно обрабатывались лишние скобки, поэтому (пс 1х ); нс воспринималось как объявление х.

Более того, из моих наблюдений следовало, что пользователи тяготеют к разным стратегиям разбора. Мое пристрастие к нисходящему разбору многократно проявлялось в форме написания конструкций, которые очень трудно ложатся на грамматику, поддерживаемую ТАСС. До сего дня С1гопг построен на базе синтаксического анализатора УАСС, определенным образом дополненного на уровне лексического разбора. С другой стороны, для С++ все же можно написать эффективный и достаточно изящный анализатор, использующий метод рекурсивного спуска.

Так построены некоторые современные компиляторы С++. П4ИИИИИИв Рождение С++ чо1о Савв:: всъесо1е () ( /*... */ ] // 4»З символов но14) 'лавлес(::рггпв() ( /*...*/ ) // Е+5 символов сотр1ех вс)гг(союр1ех); // 4 символа плюс 'сомр1ех' йоиЬ1е вс(гг(с(оло1е); // 4 символа плюс 'оооо1е' Чтобы представить данные имена всего шестъю символами верхнего регистра, пришлось бы применить какую-то форму сжатия, а это усложнило бы написание инструментальных средств. Конечно, можно воспользоватъся хэшированием, но тогда для разрешения конфликтов потребуется какая-нибудь рудиментарная «база ланных программы».

Таким образом, первый способ крайне неприятен, а второй может стать источником серьезных проблем, поскольку в стандартной модели компоновки программ на С и Гогггап никакая «база данных» не предусмотрена В связи со всем вышесказанным в 1982 г. я начал выступать в пользу доработки компоновшиков для поддержки длинных имен.

Не знаю, мои ли усилия тому причиной, но современные компоновшики разрешают гораздо более длинные имена. В С(гонг для реализации безопасного связывания применяются специальные алгоритмы кодирования типов. При этом 32 символа — это маловато, порой не хватает даже 256 (см. раздел 11.3.2). Временно — для архаичных компоновшиков — применялась система хэшнрования длинных идентификаторов, что было очень неудобно. З.ЗА. Версии Сй'опт Первые версии компиляторов С (е(гЬ С!аваев и С++ люди получали прямо от меня. Таким образом, возможность работать с С впгп С1аззез появилась у сотрудников десятков образовательных учреждений, таких как; Стэндфордский университет (декабрь 1981 г., первая поставка Срге), Калифорнийский университет в Беркли, университет штата Висконсин в Мэдисоне, Калифорнийский технологический институт, университет штата Северная Каролина в Чапел Хилл, Массачусетский технологический институт, Сиднейский университет, университет Карнеги-Мэллон, университет штата Иллинойс в Урбана-Шампейн, Копенгагенский З.З.З.

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

/«)ч31/130 С также унаследовал это ограничение. Принимая во внимание, что нмя функции-члена включает имя класса и что при компоновке необходимо было каким-то образом отразить тип перегруженной функции (см. раздел 11.3.1), я понимал, что выбор у меня невелик, рассмотрим примеры: Компилятор Огоп1 ИИИИИИШ университет, Лаборатория Резерфорда (Оксфорд), 1КСАМ, 1ХК1А Поставки компилятора отдельным образовательным учреждениям продолжались и после того, как был спроектирован и реализован С++, Таким образом компилятор получили следуюшие университеты: Калифорнийский (Беркли — август 1984 г., первая поставка С(гопГ), штата Вашингтон (Сент-Луис), Техасский (Остин), Копеншгенский и Нового Южного Уэльса.

Было, конечно, множество неофициальных копий, поскольку студенты, как водится, не обрашали внимания на бюрократические формальности. Уже тогда распространение версий на индивидуальной основе стало для меня обузой, а для университетского народа, желающего иметь С++, — причиной для раздражения. Поэтому мы с Брайаном Керниганом, начальником моего отдела, и Дейвом Каллманом, отвечавшим в АТ«" Т за С++, решили организовать выпуск С(гонг несколько иначе.

Идея заключалась в том, чтобы избежать назначения цен, подписания контрактов, организации технической поддержки, рекламы, составления документации, отвечаюшей корпоративным стандартам и тд. Вместо этого С(гопс и некоторые библиотеки передавались университетам по цене носителей. Данную версию назвали Ке1еазе Е («Е» — сокращение от Ыисаг(опа!, образовательный).

В январе 1985 г. Лаборатория резерфорда и другие учреждения получили первые ленты. Версия Е заставила меня по-другому взглянуть на веши, Фактически это было полное фиаско. Я ожидал быстрого роста интереса к С++ в университетах. Однако кривая роста нисколько не изменила своего характера (см, раздел 7.1), зато вместо новых пользователей мы получили поток жалоб от профессоров на то, что С++ не распространялся на коммерческой основе. Сколько раз я слышал такие слова: «Да, я хочу работать с С++ и знаю, что могу получить С(гонг бесплатно, но, увы, меня это не устраивает, так как мне необходима некая база, на основе которой я могу давать консультации, а мои студенты — использовать в индустриальных проектахы Вот вам и академическое стремление к чистому знанию.

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

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

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

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