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

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

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

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

Обычно в состав вертикальных библиотек входят и те базовые классы, которые включаются в горизонтальные, но акцент делается на классах, в полной мере использующих особенности именно выбранного окружения. Порой преобладают классы для поддержки пользовательских интерфейсов и графики. Частью такой библиотеки могут быть также интерфейсы к конкретным базам данных. Нередко классы из вертикальной библиотеки ориентированы на применение в некотором общем каркасе, поэтому использование отдельной части библиотеки затруднено. Лично я предпочитаю разделять горизонтальные и вертикальные аспекты базовой библиотеки, что упрощает применение и выбор наиболее подходящей из них. С другой стороны, по ряду технических и коммерческих причин разумна интеграция.

Самые значительные из ранних базовых библиотек: созданная Китом Горленом Ы1Н [Оог1еп, 1990[, предлагавшая набор классов в духе Зша1!са!Ь, и 1псегч!есчз Марка Линтона (Маг1с 1зпсоп) [ансон, 1987[, упрощавшая работу с Х ЪИпс!оиз из программ на С++. Компилятор СНУ С++ (О++) поставляется с библиотекой, которую спроектировал Дуг Леа. Ее отличительной особенностью является эффективное использование абстрактных базовых классов [1.еа, 1993]. Библиотека Ц81. Бсапг1агс! Сопсропепсв [Сагто!1, 1993] содержит набор эффективно реализованных конкретных типов для различных структур данных, а также поддержку основных промышленных версий системы 1)Ы1Х. Компания Войне Жаче продает библиотеку Топ!з«+, включаюсцую набор базовых классов, которые с 1987 г.

писали Томас Кеффер (ТЬошаз Ке((ег) и Брюс Эккель [Ке((ег, 19931. Компания С1ос1сепзр!е1 в течение многих лет поставляла коммерческие библиотеки для различных применений [1)еаг!е, 1990[. Компания Вас!опа1 поставляет С++-версию библиотеки ТЬе ВоосЬ Сошропепсз, которую Грейди Буч (Огас!у ВоосЬ) первоначально Библиотеки БИШВИИЮ реализовал на языке Аг[а. На С++ ее переписали сам Буч и Майк Вило (М))ге 'у'(100). Версия на Ада занимает 125 тыс.

строк исходного текста без учета комментариев, тогда как версия на С++ — всего 10 тыс. строк. Как видно, наследование в сочетании с шаблонами может стать мощным механизмом для организации библиотек без потери эффективности или ясности [ВоосЬ, 1993[. 8.4.2. Устойчивость и базы данных Под устойчивостьк) (регя)я(епсе) понимаются разные аспекты. Некоторым пользователям просто нужен пакет для ввода/вывода объектов, который входит в состав многих библиотек. Другие хотят обеспечить прозрачную миграцию объекта из файла в память и обратно. Третьим необходим контроль версий и протоколирование транзакций.

Четвертые не согласны пи на что, кроме распределенной системы с адекватным управлением параллельностью и полной поддержкой переме)цения схем. Поэтому я думаю, что устойчивость следует обеспечивать за счет специальных библиотек, нестандартных расширений, а возможно, и продуктов третьих фирм. Имеющийся в С++ механизм идентификации типов во время исполнения содержит кое-какие «зацепким которые оказались полезны для специалистов по устойчивости (см. раздел 14.2.5). И Х1Н, и библиотека СХ() содержат базовые механизмы для ввода/вывода объектов.

РОЕТ вЂ” пример коммерческой С++-библнотеки для поддержки устойчивости. Существует около дюжины объектно-ориентированных баз данных, к которым можно обращаться из С++ и на С++ же и написанных. В качестве примера назову ОЬ)ес(Итоге, ОХТО5 [СаггеП, 1991) и Чегяапк 8.4.3.

Библиотеки для численных расчетов Компании Копне Жауе [Ке((ег, 1992[ и 1)уас( предлагают много классов, ориентированных прежде всего на научные приложения. Основное назначение таких библиотек — представить нетривиальные математические методы в форме, удобной для специалистов, работающих в разных областях науки или техники. Вот пример непользования поставляемой компанией 5апг((а Ха1юпа! 1лЬя библиотеки ВНА(.Е««лля математической физики: уоЫ Ресопрояе(сопяс ()опЫе с)е1с, Эуптепяога у, Тепяогя К, попас Тепяога Ь) ( Эуптепяог О = эуп(Ь); йпгттепяог Н = йпгт(Ы; уессог я = ояат(у*%; уесяог опта = оиа)(Н) — 2.0*тпнегяе(у-тг(у)*Опе)*я; йпсттепяог ояепа = 0.5*опят(оэепа)) в = тпчегяе(опе-0.5*г)е1с*опеда) * (опе«0.5*г)е1г*отепа)*п; у += г)е с«эу (ь у-у*оведя); ) Согласно [Вцг(йе,1992$ «этот код прозрачен, а лежащие в его основе библиоте-, ки классов весьма многоплановы и удобны для сопровождения.

Физику, знакомому Стандартная библиотека ЯИИИИИИП с алгоритмом полярной декомпозиции, смысл этого кода ясен с первого взгляда, так что не нужна даже дополнительная документация .. 8.4.4. Специализированные библиотеки Вышеупомянутые библиотеки предназначены главным образом для поддержки программирования как такового. Но не менее важны и узкоспециализированные библиотеки. В частности, можно найти общедоступные, коммерческие и разработанные для внутреннего применения библиотеки для таких областей, как гндродинамика, молекулярная биология, анализ сетей связи, пульты телефонных опера~оров и т д. Для многих программистов именно подобные библиотеки являются свидетельством достоинств С++ в плане простоты программирования, уменьшения числа ошибок, сокращения затрат на сопровождение и т.д. Вот пример из области моделирования сетей с коммутацией каналов [Е[с]ь 1991~: $1пс1цбе <яфт11)з.ь> 1пс ггцпхя[] = ( /* ...

*/ )) боц)зге 1оаб[] = ( /* ... */ ); с1авв ЬВА : рц)з11с Ро11су ( /* ... */ ); та1п() ( Б1щ ятщю // планировщик событий яьщ.пегиогх(пем Несиогх(сгцп)ся))) // создать сеть ятщ.ггагсфс(пем тгаг11с(1оаб,3.0)); // матрица трафика яфш.роьфсу(пеы ЬВА); О стратегия маршрутизации ЬВА яцп.гцп(180)/ // моделировать в течение 180 минут соцс«я1щ; // вывести результаты Встречающиеся в этом фрагменте классы — это либо классы из библиотеки 31МЕ1В, либо произведенные от них пользователем. Они определяют сеть, нагрузку и стратегию маршрутизации для одного прогона модели. Многие специализированные библиотеки, например для поддержки графики и визуализации, являются общими, по в этой книге я не ставил своей целью перечислять или классифицировать их. 8.5. Стандартная бибпиотека Коль скоро библиотеки для С++ так разнообразны, возникает вопрос о том, какие из ннх должны быть стандартными, то есть специфицированными в стандарте и включенными в любую реализацию.

Прежде всего необходимо стандартизировать основные библиотеки, используемые повсеместно. Это значит, что нужно специфицировать точный интерфейс между С++ и стандартными библиотеками С, а также библиотеку [озсгеатз. ИИИИИИИВ Библиотеки Кроме того„нужно специфицировать базовую языковую поддержку, например, функции::орегасог пех(ейное г) и яег пех )тапд1ег(), которые поддерживают оператор пех (см.

раздел 10.6), функции сегшйпасе () и ппехрессес) () для поддержки обработки исключений (см. раздел 169) и классы суре Того, )зас) саяе и Ьас) сурейс), необходимые для поддержки идентификации типов во время исполнения (см. раздел 14.2). Далее комитет должен разобраться, может ли удовлетворить желание иметь «более полезные и стандартные классы», например ясгйпд, не занимаясь самостоятельно проектированием и не вступая в конкуренцию с индустрией производства библиотек для С++. Любые библиотеки, кроме библиотек С и !озсгеащз, которые одобряет комитет, должны включать лишь строительные блоки.

Основная роль стандартной библиотеки — облегчить взаимодействие между специализированными, независимо разработанными библиотеками. Принимая во внимание все вышесказанное, комитет одобрил классы ясгйпд и хясгйпд и пытается объединить их в некий шаблон «строки, включающей абсолютно все». Одобрен также класс динамического массива с)упаггау [3са(, 19931, шаблон класса Ыся<с(> для битовых множеств фиксированного размера, класс Ыгясг(пд для битовых множеств с изменяемым размером.

Кроме того, комитет принял классы комплексных чисел (прсдшественник — первоначальный класс сошр1ек, см. Раздел 3.3), обсуждается вопрос, следует ли припять класс вектора для поддержки численных расчетов и научных приложений. О наборе стандартных классов, их спецификациях и даже названиях все еше ведутся оживленные споры. На мой взгляд, в стандартную библиотеку должны были включены шаблоны списка и ассоциативного массива (отображения) — см.

раздел 9.2.3. Однако, как и в случае с версией 1.0, они могут быть принесены в жертву желанию во что бы то ни стало завершить стандартизацию ядра языка вовремя.' ' Я очень рал, что могу взять эти слова обратно! Комитет проникся важностью вопроса и одобрил великолепную библиотеку контейнеров, итераторов и фундалсентальпых алгоритмов, спроектированную Алексом Степановым.

Эта библиотека, которую часто называют 3ТЬ (3сапс(агс( Тещр!асс 1.!Ьгагу), представляет собой изящный, аффективный, формально полный и хорошо протестированный каркас для построения и использования контейнеров (А!ехапс(ег 3серапоч и Меня Ьее: Т!се угапг(ать Т«тр!ше 1(бгагв, НР 1дЬв ТесЬп(са! Керогс НР1.-94-34 (К.1), 1994. М(йе т'(!ос: Т)се С++ )серо»с, 1994). Разумеется, ЭТА содержит классы для отображений и списков и включает в качестве частных случаев вышеупомянутые классы с)упаггау, Ьвся н Ысясгспд. Кроме того, комитет одобрил классы векторов для поддержки численных и научных расчетов, приняв за основу предложение Кена Баджа из 3апс((а 1.аЬк Глава 9. Перспективы развития языка С++ Нельзя дважды войти в одну и ту же реку.

Гераклит 9.1. Введение Данная глава в большей степени основана на личных оценках и обобщениях. Здесь приведены ответы на некоторые общие вопросы и рассмотрены проблемы, которые всегда возникают при обсуждении проектирования С++. Глава состоит из трех взаимосвязанных частей: сз попытка оценить текущее состояние С++ с учетом имеющегося опыта, а также разобраться, каким мог бы стать язык (см. разлел 9.2); сз оценка проблем, которые станут актуальными для разработчиков программ в будущем, с целью понять, как с помощью С++ можно было бы способствовать их решению (см.

раздел 9.3); а взгляд на те области, в которых сам язык и его применение стоило бы значительно усовершенствовать (см. раздел 9А). 9.2. Оценка пройденного пути Часто говорят, что «задним умом всяк крепок». Это неверно. Данное утверждение основано на ложных допущениях о том, будто нам известны все существенные факты прошлого, что мы знаем все о текущем состоянии дел и достаточно беспристрастны.

Обычно ни одно из этих условий не выполняется. Поэтому ретроспективный взгляд на явление, столь сложное и динамичное, как язык программирования и его широкомасштабное применение, не может быть простой констатацией факта. Так или иначе, я попытаюсь дать ответы на некоторые трудные вопросы: ш достигнуты ли основные цели С++? а является ли С++ логически последовательным языколт? а какова основная недоработка языка? Разумеется, ответы на эти вопросы взаимосвязаны; «да», «да» и «отказ от включения более полной библиотеки в версию 1.0».

ПИИИИИИ? Перспективы развития языка С++ 9.2.1. Достигнуты ли основные цели С++? «С++ — это язык программирования общего назначения, цель которого — слелать работу серьезных программистов более приятным занятием» [8ггоцзггцр, 1986Ъ|. Данная задача успешно решена. Точнее, достаточно образованным и оп ытпым программистам язык дал возможность писать программы на более высоком уровне абстракции («точно так же, как в 8!пш!а»), не утратив присущей С эффективности. Это удалось сделать для приложений (внутренне сложных, ограниченных условиями среды выполнения), которым требуется быстродействие и большое потребление памяти. В более широком смысле объектно-орисцтировашюе программирование и абстракции данных стали доступны разработчикам, которые раньше относилнсь к таким метолам и поддерживающим их языкам (8ша! !га)к, С!ц, 8!пш!а, А«1а, 00 1 Ьр н т.д.) пренебрежительно и даже презрительно («лорогие игрушки, непригодные лля решения реальных задач»).

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

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

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

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