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

Бьерн Страуструп. Язык программирования С++. Специальное издание (2011) (1004033), страница 9

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

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

Разумеется, С++ не ограничивается операционной системой 1) МХ; ему просто присуши те же самые модельные взаимоотношения между языком, библиотеками, компиляторами, компоновщиками, средой исполнения и т.д., что свойственны языку С и 1)Х1Х. Эта минимальная модель помогла языку С++ успешно работать практически на любой платформе. Тем не менее, целесообразно использовать С++ и в средах с существенно большей поддержкой.

Динамическая загрузка, инкрементная компиляция, базы данных определений типов — все зто можно с успехом использовать без обратного влияния на сам язык. 43 1 3. Как проектировался С++ В С++ проверка типов и сокрытие данных полагаются на анализ программы во время компиляции, который позволяет в результате избегать непреднамеренной порчи данных. Эти меры не обеспечивают секретности или защиты от того, кто намеренно нарушает правила. Однако их можно использовать свободно, не опасаясь за эффективность программы. Главная идея состоит в том, что свойства языка должны быть не только элегантными, но и приемлемыми для реальных программ. Систематическое и подробное описание структуры языка С++ см.

в 1бггоцзггир, 1994]. 1.3.1. Эффективность и структура С+-ь разрабатывался как расширение языка С и за малыми исключениями содержит С в качестве подмножества. Это подмножество, являясь базовой частью языка, демонстрирует тесную связь между его типами, операциями, операторами и объектами, с которыми компьютер работает непосредственно: числами, символами и адресами. В языке С++ все выражения и операторы, за исключением операций петч, де!еге, гуреЫ, с1упапцс сам, 11тготч и ггу-блока, не требуют никакой дополнительной поддержки со стороны среды выполнения. С++ использует те же самые схемы вызовов функций и последовательности возвратов, что и язык С вЂ” или более эффективные.

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

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

не приводит к дополнительным накладным расходам во время выполнения программы. Другой акцент С++ — акцент на структуре программы, отражает тот факт, что после разработки языка С произошел резкий рост среднего размера разрабатываемых программ. Небольшую программу (скажем, не более !000 строк исходного кода) можно «силовым образом» заставить правильно работать, даже нарушая все правила хорошего стиля написания программ. Для больших программ таких простых решений уже нет. Если структура программы из 100000 строк запутана, то вы столкнетесь с ситуацией, когда новые ошибки возникают с той же скоростью, с какой устраняются старые. С-ь~- разрабатывался так, чтобы обеспечить лучшую Глава 1.

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

Здесь-то и приносят дополнительные плоды гибкость языка С++ и его акцент на модульность и строго типизированные интерфейсы. Язык С++ имеет столь же сбалансированный набор вспомогательных средств для написания больших программ, что и многие другие языки. Но дело здесь в том, что по мере увеличения размера программ сложности, связанные с их разработкой и сопровождением, перетекают из области чисто языковых проблем в область создания удобного рабочего инструментария, графических сред разработки и управления проектами.

Эти вопросы обсуждаются в части Р~. Настоящая книга акцентирует внимание на методах написании полезных программных средств, общеупотребительных типов, библиотек и т.п. Все это можно использовать и при написании небольших программ, и при разработке больших систем. Более того, поскольку все нетривиальные программы состоят из полунезависимых частей, то методы написания таких частей будут полезны всем программистам. Наверное, вы полагаете, что написание программ посредством детального описания структуры используемых в ней типов приводит к увеличению совокупного размера исходного кода. Для языка С++ это не так.

Программа на С++, которая определяет классы, точно определяет типы функциональных аргументов и т.д., немного короче эквивалентной, но не применяющей этих средств программы на С. Когда же используются библиотеки, программа на С++ уже намного короче своего С-эквивалента (если он вообще может быть создан). 1З.2. Философские замечания Язык программирования служит двум целям: он предоставляет программисту средства формулирования подлежащих выполнению действий, и он предоставляет набор концепций, которые программист использует, обдумывая, что нужно сделать. Первая цель в идеале требует языка, «близкого к машине», чтобы все машинные концепции отображались просто и эффективно способом, достаточно очевидным для программиста.

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

По этой причине ограничение языка средствами, не позволяющими программисту совер- 45 1 4 Исторические замечания шать ошибки, по крайней мере неразумно. Как и в случае естественных языков, знание по крайней мере двух языков чрезвычайно полезно. Язык снабжает программиста набором концептуальных средств, которые, будучи неадекватными задаче, просто игнорируются. Хороший программный дизайн и отсутствие ошибок не могут гарантироваться всего лишь присутствием/отсутствием каких-либо языковых элементов.

Система типов особо полезна в случае нетривиальных задач. Для них концепция классов языка С++ на деле доказала свою чрезвычайную силу. 1.4. Исторические замечания Я придумал язык С++, зафиксировал связанные с ним определения и выполнил самую первую реализацию. Также я выбрал и сформулировал критерии проектирования языка, разработал все основные элементы и рассматривал предложения по его расширению в комитете по стандартизации С++. Ясно, что С++ многое заимствует у С [Кегп[8[зап, 1978]. За исключением устраненных лазеек в системе типов (см. приложение В), С остается подмножеством С++.

Я сохранил все низкоуровневые средства языка С, чтобы можно было справляться с самыми критичными системными задачами. В свою очередь, С взял многое у своего предшественника — языка ВСР1. [В!статс(з, 1980]; язык С++ позаимствовал у ВСР!. стиль однострочных комментариев // сопцпепг. Другим источником вдохновения был для меня язык Бцпц1а67 [ПаЛ1, 1970], [ОаЫ, 1972]; концепция классов (вместе с производными классами и виртуальными функциями) была позаимствована у этого языка. Возможность перегружать операции и помешать объявления всюду, где может стоять оператор, напоминает А18о168 [%оодзчаго, 1974].

С момента выхода первого издания этой книги язык интенсивно пересматривался и обновлялся. Основной ревизии подверглись правила разрешения перегрузки, компоновка и средства управления памятью. Дополнительно, были внесены небольшие изменения для улучшения совместимости с языком С. Также бьп сделан ряд обобшений и несколько фундаментальных дополнений; множественное наследование, статические функции-члены классов, константные функции-члены, зашншенные члены классов, шаблоны, обработка исключений, КТТ! (гцп-1!те гуре !г!епг!Всаг!оп) и пространства имен (патезрасез). 06Шим мотивом всех этих изменений и расширений было стремление улучшить средства языка для построения и использования библиотек. Эволюция С++ описана в [51гоцз!гцр, 1994].

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

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

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

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