Бьерн Страуструп. Язык программирования С++. Специальное издание (2011), страница 11
Описание файла
DJVU-файл из архива "Бьерн Страуструп. Язык программирования С++. Специальное издание (2011)", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 11 - страница
Многие годы централизованное управление междугородними телефонными звонками в США осуществлялось программой, написанной на С++, и каждый звонок на номер с префиксом 800 обрабатывался этой программой [Кашаг[т, 1993]. Такие приложения велики и эксплуатируются очень долго.
Поэтому стабильность, масштабируемость и совместимость были непременными аспектами разработки С++. Программы, содержащие миллионы строк кода на С++, встречаются не так уж и редко. Как и С, язык С++ не предполагал его интенсивного применения для решения вычислительных задач. И тем не менее, многие численные, научные и инженерные задачи программируются на С++. Основной причиной этого факта является необходимость комбинировать в программах вычислительную активность и графику, а также необходимость вычислений со сложными структурами данных, которые плохо вписываются в прокрустово ложе языка Гопгап [Вц08е, 1992], [Вапоп, 1994].
Графика и ОО1 (ОгарЫсв Ызег 1птег(асе — графический интерфейс пользователя)— вот области, где С++ используется весьма интенсивно. Любой, кто работал на Арр1е Масштоз[т или РС %шг[откз, косвенно использовал С++, поскольку базовые пользовательские интерфейсы этих систем реализованы на С++. Наиболее популярные библиотеки для работы с графическим сервером Х-Будеш на платформе (Лч[[Х также написаны на С++.
Таким образом, С++ широко используется в приложениях, для которых важен развитый пользовательский интерфейс. Все перечисленное указывает на наиболее сильную сторону С++ — возможность эффективно обслуживать широкий диапазон прикладных областей. Не так уж трудно повстречаться с задачами, для которых одновременно нужны и сетевые взаимодействия (в локальных и глобальных сетях), и вычисления, и графика, и взаимодействие с пользователем, и доступ к базам данных. Традиционно эти области обслуживались раздельно и разными группами технических специалистов, каждая из которых применяла разные языки программирования. Язык же С++ одинаково хорошо применим ко всем этим областям.
Более того, он разрешает сосуществовать фрагментам программы, написанным на разных языках. С++ широко используется для обучения и исследований. Это вызывает удивление у многих людей, которые совершенно справедливо замечают, что это далеко не самый маленький и простой язык. И тем не менее, про С++ можно сказать, что он: ° достаточно ясен для обучения базовым концепциям, ° практичен, эффективен и гибок для создания особо критичных систем, ° доступен для организаций и коллективов, которым необходимы разнообразные среды разработки и выполнения, ° достаточно обширен и содержателен для изучения сложных концепций и методов, ° достаточно технологичен для переноса изученного в коммерческую среду. В общем, С++ — это язык, вместе с которым можно расти непрерывно.
49 1 6 Языки С и С++ 1.6. Языки С и С++ Язык С был выбран в качестве базы при разработке С++, потому что он: 1. Универсальный, лаконичный н относительно низкоуровневый. 2. Адекватен большей части системных задач. 3. Исполняется везде и на всем.
4. Хорошо подходит для программирования в среде ()Х1Х. Конечно, С имеет свои проблемы, но их имел бы и любой другой язык, специально разработанный с самого нуля, а проблемы С всем уже хорошо известны. Разработанный поверх С язык «С с классами» стал полезным (хотя и неуклюжим) инструментом практически в первые же месяцы после того, как вообще возникла идея добавить 8)пш1а-подобные классы в' С. Однако по мере того, как росла популярность языка С++ и все более важными становились его средства, построенные поверх С, постоянно поднимался вопрос о целесообразности сохранения такой совместимости.
Конечно, при устранении наследственности часть проблем отпадет сама собой (см., например, 18ег)г!, 1981!). Но все же мы на это не пошли по следующим причинам: 1. Миллионгы строк кода на С могут эффективно инкорпорироваться в С++ программы, пока не требуется их значительной переделки. 2. Миллионы строк библиотечного кода и полезных утилит, написанных на С, могут использоваться из программ на С++, пока эти языки синтаксически близки и совместимы на уровне правил компоновки.
3. Сотни тысяч программистов знают С, так что для перехода на С++ им нужно изучить лишь новые конструкции С++, а не переучивать основы. 4. С и С++ будут долгие годы использоваться на одних и тех же системах одними и теми же людьми, так что разница между этими языками должна быть или минимальной, или очень большой, иначе не избежать путаницы и ошибок. Определения в С++ были пересмотрены с тем, чтобы любая конструкция, применяемая и в С, и в С++, имела бы одинаковый смысл в обоих языках (с незначительными исключениями; см. 5В.2) Язык С также не стоял на месте и эволюционировал, частично под влиянием С++ (коз1ег, 1984].
Стандарт АХ8! С 1С, 1999) содержит синтаксис объявления функций, позаимствованный у «С с классами». Заимствование шло в обоих направлениях. Например, тип юг был впервые предложен для А!181 С, но реализован сначала в С++. Как было обещано в первом издании настоящей книги, определение С++ пересмотрено с целью устранения необоснованных несовместимостей, и теперь С++ более совместим С, чем вначале.
В идеале, С++ должен быть близок к С настолько, насколько это возможно (но не более того) (Коеп)8, 1989). Стопроцентная совместимость никогда не планировалась, ибо она подрывает типовую безопасность и гармонию между встроенными и пользовательскими типами. Знание С не является обязательным условием для изучения С++. Программирование на С толкает на применение трюков, совершенно ненужных в свете возможностей С++. В частности, явное приведение типов в С++ используется реже, чем 50 Глава 1. Обращение к читателю в С (з1.6.1). В то же время, хорошие программы на С, по сути, весьма близки к программам на С++.
Таковы, например, все программы из книги Кернигана и Ритчи 7ле С Ргобгатлплб 1.ал8иабе Г2пд Б(!г)ол) [Кепп8ап, 1988]. В принципе, знание любого языка со статической системой типов помогает изучению С+ч-. 1.6.1. Информация для С-программистов Чем лучше вы знакомы с С, тем труднее вам будет удержаться от соблазна писать на С++ в стиле С, теряя тем самым многие преимущества С++. Пожалуйста, ознакомьтесь с приложением В, в котором перечисляются все различия между С и С+ч-. Вот некоторые вещи, с которыми С++ справляется лучше, чем С: 1. Макросы менее необходимы в С++.
Используйте сола (55.4) или елвт (84.8) для объявления констант, Глйие (87.!.1) — чтобы избежать накладных расходов на вызов функции, шаблоны (глава 13) — для определения семейств функций и типов, и патехраее (88.2) для преодоления коллизии имен. 2. Объявляйте переменные только тогда, когда они потребуются и тотчас же инициализируйте их.
В языке С++ объявление допустимо всюду, где может стоять оператор (86.3.1), в инициализирующих выражениях в операторе цикла Уог (86.3.3) и в условиях (86.3.2.1). 3. Не применяйте лш11осн. Операция лев (86..2.6) работает лучше. Вместо геа11ос О попробуйте тип гесгог (83.8, 816.3).
4. Старайтесь избегать юЫ*, арифметики указателей, объединений, явных приведений типа кроме как глубоко внутри реализаций функции или класса. В большинстве случаев явное приведение типов свидетельствует о дефектах проектирования. Если преобразование все же нужно, применяйте одну из новых операций приведения (86.2.7), которые точнее отражают ваши намерения. 5.
Минимизируйте применение массивов и строк в С-стиле — стандартные библиотечные типы хгг(лл (83.5) и геегог (83.7.1) заметно упрощают программирование. В целом, не пытайтесь программировать самостоятельно то, что уже запрограммировано в стандартной библиотеке. Чтобы обеспечить компоновку функции С++ по правилам языка С, применяйте в ее объявлении соответствующий модификатор (89.2.4). И что самое важное, старайтесь мыслить о программе как о наборе взаимосвязанных концепций, представимых классами и объектами, а не о наборе структур данных, чьи биты перерабатываются функциями. 1.б.2.
Информация для С++-программистов Многие программисты используют С++ уже целое десятилетие. Большинство из них работают в одной и той же среде и привыкли к ограничениям, свойственным ранним компиляторам и библиотекам. Нельзя сказать, что опытные программисты не замечали появления новых средств в С++ — скорее, они не отслеживали их взаимоотношений, вследствие которых и стали возможными новые фундаментальные технологии.
То, что ранее было неизвестно или казалось непрактичным, теперь может оказаться наилучшим подходом. Вьиснить зто можно лишь пересмотрев основы. 1 7. Размышления о программировании на С++ Читайте главы по порядку. Если содержание главы вам известно, то ее беглый просмотр займет лишь несколько минут. а если нет, то тогда вы наверняка столкнетесь с неожиданностями.