straustrup2 (852740), страница 8

Файл №852740 straustrup2 (Бьерн Страуструп. Язык программирования С++) 8 страницаstraustrup2 (852740) страница 82021-10-05СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

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

Еслипользователь описал структуру, содержащую две величины, занимающие по 16 разрядов, тогарантируется, что она поместится в 32-х разрядный регистр.13Бьерн Страуструп.Язык программирования С++Язык С++ проектировался для использования в довольно традиционной среде, а именно: в системепрограммирования С операционной системы UNIX. Но есть вполне обоснованные доводы в пользуиспользования С++ в более богатой программной среде. Такие возможности, как динамическаязагрузка, развитые системы трансляции и базы данных для хранения определений типов, можноуспешно использовать без ущерба для языка.Типы С++ и механизмы упрятывания данных рассчитаны на определенный синтаксический анализ,проводимый транслятором для обнаружения случайной порчи данных. Они не обеспечиваютсекретности данных и защиты от умышленного нарушения правил доступа к ним.

Однако, эти средстваможно свободно использовать, не боясь накладных расходов памяти и времени выполненияпрограммы. Учтено, что конструкция языка активно используется тогда, когда она не только изящнозаписывается на нем, но и вполне по средствам обычным программам.Историческая справкаБезусловно С++ многим обязан языку С [8], который сохраняется как его подмножество. Сохранены ивсе свойственные С средства низкого уровня, предназначенные для решения самых насущных задачсистемного программирования. С, в свою очередь, многим обязан своему предшественнику языку BCPL[13].

Комментарий языка BCPL был восстановлен в С++. Если читатель знаком с языком BCPL, томожет заметить, что в С++ по-прежнему нет блока VALOF. Еще одним источником вдохновения былязык SIMULA-67 [2,3]; именно из него была заимствована концепция классов (вместе c производнымиклассами и виртуальными функциями). Оператор inspect из SIMULA-67 намеренно не был включен вС++.

Причина – желание способствовать модульности за счет использования виртуальных функций.Возможность в С++ перегрузки операций и свобода размещения описаний всюду, где можетвстречаться оператор, напоминают язык Алгол-68 [24].С момента выхода в свет первого издания этой книги язык С++ подвергся существенным изменениям иуточнениям. В основном это касается разрешения неоднозначности при перегрузке, связывании иуправлении памятью.

Вместе с тем, были внесены незначительные изменения с целью увеличитьсовместимость с языком С. Были также введены некоторые обобщения и существенные расширения,как то: множественное наследование, функции-члены со спецификациями static и const, защищенныечлены (protected), шаблоны типа и обработка особых ситуаций. Все эти расширения и доработки былинацелены на то, чтобы С++ стал языком, на котором можно создавать и использовать библиотеки. Всеизменения описываются в [10,18,20,21 и 23].Шаблоны типов появились частично из-за желания формализовать макросредства, а частично былиинспирированы описанием генерических объектов в языке Ада (с учетом их достоинств и недостатков) ипараметризированными модулями языка CLU. Механизм обработки особых ситуаций появился отчастипод влиянием языков Ада и CLU [11], а отчасти под влиянием ML [26].

Другие расширения, введенныеза период между 1985 и 1991 г.г. (такие как множественное наследование, статические функции-членыи чистые виртуальные функции), скорее появились в результате обобщения опыта программированияна С++, чем были почерпнуты из других языков.Более ранние версии языка, получившие название "С с классами" [16], использовались, начиная с 1980г. Этот язык возник потому, что автору потребовалось написать программы моделирования,управляемые прерываниями.

Язык SIMULA-67 идеально подходит для этого, если не учитыватьэффективность. Язык "С с классами" использовался для больших задач моделирования. Строгойпроверке подверглись тогда возможности написания на нем программ, для которых критичны ресурсывремени и памяти. В этом языке недоставало перегрузки операций, ссылок, виртуальных функций имногих других возможностей.

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

Язык неполучил названия D, поскольку он является расширением С, и в нем не делается попыток решить какиелибо проблемы за счет отказа от возможностей С. Еще одну интересную интерпретацию названия С++можно найти в приложении к [12].Изначально С++ был задуман для того, чтобы автору и его друзьям не надо было программировать на14Бьерн Страуструп.Язык программирования С++ассемблере, С или других современных языках высокого уровня.

Основное его предназначение упростить и сделать более приятным процесс программирования для отдельного программиста. Донедавнего времени не было плана разработки С++ на бумаге. Проектирование, реализация идокументирование шли параллельно. Никогда не существовало "проекта С++" или "Комитета поразработке С++". Поэтому язык развивался и продолжает развиваться так, чтобы преодолеть всепроблемы, с которыми столкнулись пользователи. Толчками к развитию служат также и обсужденияавтором всех проблем с его друзьями и коллегами.В связи с лавинообразным процессом увеличения числа пользователей С++, пришлось сделатьследующие изменения. Примерно в 1987 г.

стало очевидно, что работа по стандартизации С++неизбежна и что следует незамедлительно приступить к созданию основы для нее [22]. В результатебыли предприняты целенаправленные действия, чтобы установить контакт между разработчиками С++и большинством пользователей.Применялась обычная и электронная почта, а также былонепосредственное общение на конференциях по С++ и других встречах.Фирма AT&T Bell Laboratories внесла основной вклад в эту работу, предоставив автору право изучатьверсии справочного руководства по языку вместе с упоминавшимися разработчиками ипользователями. Не следует недооценивать этот вклад, т.к.

многие из них работают в компаниях,которые можно считать конкурентами фирмы AT&T. Менее просвещенная компания могла бы простоничего не делать, и в результате появилось бы несколько несогласованных версий языка. Около стапредставителей из порядка 20 организаций изучали и комментировали то, что стало современнойверсией справочного руководства и исходными материалами для ANSI по стандартизации С++.

Ихимена можно найти в "Аннотированном справочном руководстве по языку С++" [4]. Справочноеруководство полностью вошло в настоящую книгу. Наконец, по инициативе фирмы Hewlett-Packard вдекабре 1989 г. в составе ANSI был образован комитет X3J16. Ожидается, что работы постандартизации С++ в ANSI (американский стандарт) станут составной частью работ по стандартизациисилами ISO (Международной организации по стандартизации).С++ развивался одновременно с развитием некоторых фундаментальных классов, представленных вданной книге. Например, автор разрабатывал классы complex, vector и stack, создавая одновременновозможность перегрузки операций. В результате этих же усилий и благодаря содействию Д.

Шапиропоявились строковые и списочные классы. Эти классы стали первыми библиотечными классами,которые начали активно использоваться. Библиотека task, описываемая в [19] и в упражнении 13 из$$6.8 стала частью самой первой программы, написанной на языке "С с классами". Эта программа ииспользуемые в ней классы были созданы для моделирования в стиле Симулы.

Библиотека task быласущественно переработана Д. Шапиро и продолжает активно использоваться до настоящего времени.Потоковая библиотека, как указывалось в первом издании книги, была разработана и примененаавтором. Д. Шварц преобразовал ее в потоковую библиотеку ввода-вывода ($$10), используя наряду сдругими приемами метод манипуляторов Э.Кенига ($$10.4.2).

Класс map ($$8.8) был предложенЭ.Кенигом. Он же создал класс Pool ($$13.10), чтобы использовать для библиотеки предложенныйавтором способ распределения памяти для классов ($$5.5.6). На создание остальных шаблоновповлияли шаблоны Vector, Map, Slist и sort, представленные в главе 8.Сравнение языков С++ и СВыбор С в качестве базового языка для С++ объясняется следующими его достоинствами:(1) универсальность, краткость и относительно низкий уровень;(2) адекватность большинству задач системного программирования;(3) он идет в любой системе и на любой машине;(4) полностью подходит для программной среды UNIX.В С существуют свои проблемы, но в языке, разрабатываемом "с нуля" они появились бы тоже, апроблемы С, по крайней мере, хорошо известны.

Более важно то, что ориентация на С позволилаиспользовать язык "С с классами" как полезный (хотя и не очень удобный) инструмент в течение первыхмесяцев раздумий о введении в С классов в стиле Симулы.С++ стал использоваться шире, но по мере роста его возможностей, выходящих за пределы С, вновь ивновь возникала проблема совместимости. Ясно, что отказавшись от части наследства С, можно15Бьерн Страуструп.Язык программирования С++избежать некоторых проблем (см., например, [15]). Это не было сделано по следующим причинам:(1) существуют миллионы строк программ на С, которые можно улучшить с помощью С++, нопри условии, что полной переписи их на язык С++ не потребуется;(2) существуют миллионы строк библиотечных функций и служебных программ на С, которыеможно было бы использовать в С++ при условиях совместимости обоих языков на стадиисвязывания и их большого синтаксического сходства;(3) существуют сотни тысяч программистов, знающих С; им достаточно овладеть только новымисредствами С++ и не надо изучать основ языка;(4) поскольку С и С++ будут использоваться одними и теми же людьми на одних и тех жесистемах многие годы, различия между языками должны быть либо минимальными, либомаксимальными, чтобы свести к минимуму количество ошибок и недоразумений.

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

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

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

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