Главная » Просмотр файлов » Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004

Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791), страница 11

Файл №1160791 Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004) 11 страницаБ. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791) страница 112019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

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

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

В С++ зто не так. Программа на С++, в которой объявлены типы аргументов функций, используются классы и т. д., обычно слегка меныпе, чем эквивалентная программа на С, не применяющая эти средства. Если же используются библиотеки, программа на С++ окажется намного короче эквивалента на С вЂ” разумеется в предположении, что работающий эквивалент ца С вообще может быть создан.

1.3.2. ФилосоФские замечания Язык программирования служит двум взаимосвязанным целям: он предоставляет программисту инструмент лля описания подлежащих выполнению действий и набор концепций, которыми оперирует программист, обдумывая, что можно сделать. Первая цель в идеале требует языка, близкого к компьютеру, чтобы все важные элементы компьютера управлялись просто и эффективно способом, достаточно очевидным лля программиста.

Язык С создавался, отталкиваясь именно от этой идеи. Вторая цель в идеале требует языка, близкого к решаемой задаче, чтобы концепции решения могли быть выражены понятно и непосредственно. Эта идея привела к пополнению С свойствами, превратившими его в С+аз Связь между языком, на котором лгы думаем (пишем программы), и задачами (решениями), которые мы можем себе представить, очень тесная. По этой причине огра- 45 1,4. Исторические замечания ничение возможностей языка с целью предотвращения программистских ошибок в лучшем случае опасно. Также как и в случае с естественными языками, огромную пользу приносит знание по крайней мере двух языков. Язык предоставляет программисту набор концептуальных средств.

Если эти средства не адекватны поставленной задаче, они просто игнорируются. Качественное проектирование и отсутствие ошибок не могут быть гарантированы просто присутствием или отсутствием специфических возможностей в языке. Использование типов особенно полезно в нетривиальных задачах. Понятие класса в С-ь+ на практике оказалось мощным концептуальным инструментом. 1.4. Исторические замечания Я придумал С++, записал его первоначальное определение и выполнил первую реализацию. Я выбрал и сформулировад критерии проектирования С++, разработал его основныс возможности и отвечал за сульбу предложений по расширению языка в комитете по стандартизации С++.

Очевидно. что Съ+ многим обязан С [Кегп]ЯЬап, 1978]. Язык С остается подмножеством Сэ + (но в С++ устранены несколько серьезных брс|пей системы типов С; подробнее см. в приложении Б). Я также сохранил средства С, которые являются достаточно низкоуровневыми, чтобы справляться с самыми критичными системными задачами. Язык С, в свою очередь, мпогиьч обязан своему предшественнику, ВСР1. [К1сЬагсЬ, 1980]; кстати, стиль комментариев // был взят в С++ из ВСРЕ. Другим основным источником влохновения был язык 51пш1а67 [РаЬЬ 1970], [РаЬ1, 1972].

Концепция классов (с производными классами и виртуальными функциями) была позаимствовшга из него. Средства перегрузки операторов и возможность помещения объявлений в любом месте, где может быть записана инструкция, напоминает Л]8о]68 [Ъ'оог]чгагй, 1974]. Со времени первого издания этой книги язык интенсивно пересматривался и обновлялся. Вот области, наиболее подвергшиеся изменениям: разрешение перегрузки, компоновка и средства управления памятью.

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

Развитие С++ описано в [81гопзтгпр, 1994]. Шаблоны изначально разрабатывались для реализации контейнеров со статически определенными типами (такими как списки, вектора и ассоциативные массивы) и поддержки элегантного и эффективного использования таких контейнеров (обобщенное программирование). Ключевой целью было сокращение использования макросов и явных преобразований типов.

Идея шаблонов была частично вдохновлена механизмом наследования в языке Лоа (как его достоинствами, так и недостаткал1п) и параметризованными модулями в С]ш Лналогнчно, механизм обработки исключений возник на основе Лг]а [1сЬЬ]ап, 1979], С1п [Ь1з]гоу, 1979] и МЕ [ЪЪ'1Ыгош, 1987] Другие нововведения периода с 1985 по 1995 год, такие как мпоэкествениое наследование, чисто виртуальные функции и пространства имен, являются скорее обобщениями, сделанными на основе опыта использования С++, чем идеями, взятыми из других языков. Глава ц Обращение к читателю 46 Более ранние версии языка, широко известные под названием «С с классами. [81гопзьгпр, 1994[, появлялись с 1980 года.

Изначалъно язык был изобрстен, потому что я хотсл писать управляемые событиями моделирующие программы, для катар>лх 8[пш1а67 была бы идеальным средством, если бы не требования эффективности. «С с классамп» тщательно тестировался на проектах, требовавших минимального объема памяти и времени выполнения. В нем отсутствовали перегрузка операторов, ссылки, виртуальныс функции, шаблоны, исключения и многое другое. Впервые С++ был использован впе исследовательской организации в июле 1983 года. Название «Сч ч-» (произносится «си плюс-плюс»' ) было придумано 1'иком Мас- ' китти (Кгс!с Малс)гй) летом 1983 года.

Имя отражает природу изменений в языке по сравнению с С. «+м» вЂ” это оператор инкремента в С. Чуть более короткое пмя «С«> является синтаксической ошибкой и, кроме то> о, оно уже использовалось в качестве названия друго~о языка. Знатоки семантики С считают, что С++ предпочтительней ++С. Язык нс назван Р («Ди>), потому что является расширением С и нс пытается устранять проблем>ы путем удаления элементов С. Другие интерпретации названия С-и- можно найти в приложении к [Ог>чеИ, 1949[. Первоначальная цель создания С+«состояла в том, чтобы избавить автора и его 'друзей от программирования на ассемблере, С или других современных языках высокого уровня. Главной целью было облегчение программирования и превращение его в более приятное занятие. С++ никогда не проектировался на бумаге: проектирование, документирование н реализация шли парю1лельно.

Не существовало «Сль проекта» или «комитета по С++ . С+«развивался с целью разрешения проблем, с которыми сталкнвалпсь пользователи, а также в результате моих разговоров с друзьями и коллегами. Позднее интенсивный рост С++ вызвал некоторые изменения, Около 1987 года стало очевидно, что нсизбсжно создание формального стандарта С ' +, и что нам необходимо начать готовить почву лля этих усилий [Зтгопзггпр, 19941.

Результатом явилось сознательное распшрение контактов мех<ду создателями компиляторов С++ н основными пользователямп посредством переписки, электронной почты, личных встреч на конференциях, посвященных С++, и в других местах. АТ4 Т Ве1! ЕаЬогагог1ез внесла значительный вклад в этот процесс, позволив мне, делиться предварительными версиями руководства по С++ с разработчиками компиляторов и пользователями. Значение этого вклада не следует недооценивать, потому что многие из этих людей работали в фирмах, являвшихся конкурентами АТс' Т.

Менее просвсп1енная компания могла бы создать серьезные проблемы, которые бы привели к фрагментации языка. Сотни отдельных лиц из десятков организаций прочли и высказали свое мнение по поводу того, что стало руководством по С++ и базовым докумснтом для стандарта АЫЗ! С+»з Их имена можно найти в ТЬе Аппогаге>1 С+ + 1>е[егепсе Мапиа1 (Справочное руководстве по языку С+ + с комментариями) [В[1)э, 1989].

В конце концов, в декабре 1989 года по инициативе Незя!егг-Рве[саге[ был создан комитет ХЗ) 16 при А)«81. В июне 1991 года усилия АН81(Американский Национальный Институт по Стандартизации) по стандартизации См+ стали частью деятельности 150 (Международная Организация по Стандартизации). С 1990 года эти два обьединенпых комитета по стандарту С++ стали основным форумом, содействовавшим развитию С+ +.

Я работал в этих комитетах с самого начала. В качестве ~лавы ' Можно произносить также «си алас плас» (на англпйский манер). — Примеч, рвд. 47 1.5. Использование С++ рабочей группы по расширениям языка я непосредственно отвечал за обработку предложений по изменениям в Сч+ и добавленгпо новых средств. Первоначальный проект стандарта был выпущен для публичного обсуждения в апреле 1995 года.

Международный стандарт 150 (150/1ЕС 14882) по С++ был принят в 1998 году. Техническое соглашение, устраняющее незначительные ошибки и противоречия, было введено в 2003 г. [С+-", 2003]. С++ развивался рука об руку с некоторыми из классов, описанными в этой книге. Например, я разработал классы комплексных чисел, векторов и стека и ввел перегрузку операторов. Те же усилия привели Джонатана Шопиро ([опагЬап 5Ьорйо) и меня к созданию классов строк и списков. Классы Джонатана для строк и списков были первыми активно использовавшимися библиотечными классами.

Класс строк в стандартной библиотеке С++ происходит от этих более ранних классов. Библиотека задач, описанная в [5тгоцзсгпр, 1987] и в 9 12.7[11], была частью первой в мире программы, наппса|пюй па «С с классами». Я написал ее и соответствующие классы для поддержки стиля программирования, прнсуьцего 5[па!а. Библиотека задач была пересмотрена и переписана в значительной степени Джонатаном! Попиро и до сих пор активно используется. Библиотека потоков, как она описана в первом издании этой книги, была разработана и реализована мной. Джерри Шварц (]еггу 5сЬзчагя) преобразовал ее в библиотеку потокового ввода/вывода (глава 21), использовав технику манипуляторов Эндрю Кснига и другие идеи, В дальнейшем библиотека потокового ввела/вывода обновлялась в процессе стандартизации.

Болыпая часть работы была проделана Джерри 1Пварцем, Натаном Майерсом ([з[агЬап Муегз) и Норихиро Кумагайи ([зог1Ь[го Кпшайа[). На развитие шаблонов оказали влияние реализации шаблонов оестог, шар, 11з1 и зог1, выполненные Эндрю Кенигом, Ллексом Степановым (Л!ех 5герапоч), мной и другими. В свою очередь, работа Ллекса Степанова о механизме обобщенного программирования с использованием шаблонов привела к контейнерам и некоторым алгоритмам стандартной библиотеки С++ (9 16гй главы 17, 18, 9 192). Библиотека па1аг ау для численных расчетов (глава 22) изначально была результатом работы Кента Баджа (Кепс Впг[йе).

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

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

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

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