Информация о книге

978-5-94074-738-3

Главная  » Научно-техническая литература » Информационные технологии. Компьютеры » Программирование » С, С++, C# » Дизайн и эволюция языка С++

Страуструп Б., Дизайн и эволюция языка С++


серия: Для программистов
ДМК-Пресс, 2011 г., 978-5-94074-738-3


Наличие в интернет-магазинах

Магазинов: 2, Цена: от 1779 руб. посмотреть все

Описание книги

В книге, написанной создателем языка C++ Бьерном Страуструпом, представлено описание процесса проектирования и разработки языка программирования C++. Здесь изложены цели, принципы и практические ограничения, наложившие отпечаток на структуру и облик C++, обсужден дизайн недавно добавленных в язык средств: шаблонов, исключении, идентификации типа во время исполнения и пространств имен. Автор анализирует решения, принятые в ходе работы над языком, и демонстрирует, как правильно применять "реальный объектно-ориентированный язык программирования". Книга удобно организована, поучительна, написана с юмором. Описание ключевых идей даст начинающему пользователю ту основу, на которой позже он выстроит свое понимание всех деталей языка. Опытный программист найдет здесь обсуждение принципиальных вопросов проектирования, что позволит ему лучше понять язык, с которым он работает. 2-е издание

Купить эту книгу можно в интернет-магазинах

  Буквоед - 1779 руб.
  Страница товара выбранного интернет-магазина откроется в новом табе

Поделиться ссылкой на книгу



Содержание книги

Предисловие
Благодарности
Обращение к читателю
Часть 1
Глава 1. Предыстория C++
1.1. Язык Simula и распределенные системы
1.2. Язык С и системное программирование
1.3. Немного об авторе книги
Глава 2. Язык С with Classes
2.1. Рождение С with Classes
2.2. Обзор языковых возможностей
2.3. Классы
2.4. Эффективность исполнения
2.4.1. Встраивание
2.5. Модель компоновки
2.5.1. Простые реализации
2.5.2. Модель размещения объекта в памяти
2.6. Статический контроль типов
2.6.1. Сужающие преобразования
2.6.2.0 пользе предупреждений
2.7. Почему С?
2.8 Проблемы синтаксиса
2.8.1. Синтаксис объявлений в языке С
2.8.2. Тэги структур и имена типов
2.8.3. Важность синтаксиса
2.9. Производные классы
2.9.1. Полиморфизм без виртуальных функций
2.9.2. Контейнерные классы без шаблонов
2.9.3. Модель размещения объекта в памяти
2.9.4.Ретроспектива
2.10. Модель защиты
2.11. Гарантии времени исполнения
2.11.1. Конструкторы и деструкторы
2.11.2. Распределение памяти и конструкторы
2.1 1.3. Функции call и return
2.12. Менее существенные средства
2.12.1. Перегрузка оператора присваивания
2.12.2. Аргументы по умолчанию
2.13. Что не реализовано в С with Classes
2.14. Рабочая обстановка
Глава 3. Рождение C++
3.1. От С with Classes к C++
3.2. Цели C++
3.3. Компилятор Cfront
3.3.1. Генерирование С-кода
3.3.2. Синтаксический анализ C++
3.3.3. Проблемы компоновки
3.3.4. Версии Cfront
3.4. Возможности языка
3.5.Виртуальные функции
3.5.1. Модель размещения объекта в памяти
3.5.2. Замещение и поиск подходящей
виртуальной функции
3.5.3. Сокрытие членов базового класса
3.6. Перегрузка
3.6.1. Основы перегрузки
3.6.2. Функции-члены и дружественные
функции
3.6.3. Операторные функции
3.6.4. Перегрузка и эффективность
3.6.5. Изменение языка и новые операторы
3.7. Ссылки
3.7.1. Lvalue и Rvalue
3.8. Константы
3.9. Управление памятью
3.10. Контроль типов
3.11. Второстепенные возможности
3.11.1. Комментарии
3.1 1.2. Нотация для конструкторов
3.11.3. Квалификация
3.1 1.4. Инициализация глобальных объектов
3.11.5. Предложения объявления
3.12. Языки С и C++
3.13. Инструменты для проектирования языка
3.14. Книга "Язык программирования C++"
3.15. Статья "Whatis?"
Глава 4. Правила проектирования языка C++
4.1. Правила и принципы
4.2. Общие правила
4.3. Правила поддержки проектирования
4.4. Технические правила
4.5. Правила поддержки низкоуровневого
программирования
4.6. Заключительное слово
Глава 5. Хронология 1985-1993 гг
5.1. Введение
5.2. Версия 2.0
5.2.1. Обзор возможностей
5.3. Аннотированное справочное руководство
5.3.1. Обзор ARM
5.4. Стандартизация ANSI и ISO
5.4.1. Обзор возможностей
Глава 6. Стандартизация
6.1. Что такое стандарт?
6.1.1. Детали реализации
6.1.2. Тест на реалистичность
6.2. Работа комитета
6.2.1. Кто работает в комитете
6.3. Как велась работа
6.3.1. Разрешение имен
6.3.2. Время жизни объектов
6.4. Расширения
6.4.1. Критерии рассмотрения предложений
6.4.2. Текущее состояние дел
6.4.3. Проблемы, связанные с полезными
расширениями
6.4.4. Логическая непротиворечивость
6.5. Примеры предлагавшихся расширений
6.5.1. Именованные аргументы
6.5.2. Ограниченные указатели
6.5.3. Наборы символов
Глава 7. Заинтересованность и использование
7.1. Рост интереса к C++
7.1.1. Отсутствие маркетинга C++
7.1.2. Конференции
7.1.3.Журнапыикниги
7.1.4. Компиляторы
7.1.5. Инструментальные средства и среды
программирования
7.2. Преподавание и изучение C++
7.3. Пользователи и приложения
7.3.1. Первые пользователи
7.3.2. Сферы применения C++
7.4. Коммерческая конкуренция
7.4.1. Традиционные языки
7.4.2. Современные языки
7.4.3. Как выдержать конкуренцию
Глава 8. Библиотеки
8.1.Введение
8.2. Проектирование библиотеки C++
8.2.1. Альтернативы при проектировании
библиотеки
8.2.2. Языковые средства и построение
библиотеки
8.2.3. Как работать с разнообразными
библиотеками
8.3. Ранние библиотеки
8.3.1. Библиотека потокового ввода/вывода
8.3.2. Поддержка параллельности
8.4. Другие библиотеки
8.4.1. Базовые библиотеки
8.4.2. Устойчивость и базы данных
8.4.3. Библиотеки для численных расчетов
8.4.4. Специализированные библиотеки
8.5. Стандартная библиотека
Глава 9. Перспективы развития языка C++
9.1.Введение
9.2. Оценка пройденного пути
9.2.1 .Достигнуты ли основные цели C++?
9.2.2. Является ли C++логически
последовательным языком?
9.2.3. Основная недоработка языка
9.3. Всего лишь мост?
9.3.1. Мост нужен надолго
9.3.2. Если C++ - это ответ, то на какой вопрос?

9.4. Что может сделать C++ более
эффективным
9.4.1. Стабильность и стандарты
9.4.2. Обучение и приемы
9.4.3. Системные вопросы
9.4.4. За пределами файлов и синтаксиса
9.4.5. Подведение итогов и перспективы
Часть 2
Глава 10. Управление памятью
10.1.Введение
10.2. Отделение распределения памяти и
инициализации
10.3. Выделение памяти для массива
10.4. Размещение объекта в памяти
10.5. Проблемы освобождения памяти
10.5.1. Освобождение памяти для массивов
10.6. Нехватка памяти
10.7. Автоматическая сборка мусора
10.7.1. Необязательный сборщик мусора
10.7.2. Как должен выглядеть необязательный
сборщик мусора?
Глава 11. Перегрузка
11.1.Введение
11.2. Разрешение перегрузки
1 1.2.1. Детальное разрешение
11.2.2. Управление неоднозначностью
1 1.2.3. Нулевой указатель
11.2.4. Ключевое слово overload
11.3. Типобезопасная компоновка
11.3.1. Перегрузка и компоновка
11.3.2. Реализация компоновки в C++
11.3.3. Анализ пройденного пути
11.4. Создание и копирование объектов
1 1.4.1. Контроль допустимости копирования
11.4.2. Управление распределением памяти
11.4.3. Управление наследованием
1 1.4.4. Почленное копирование
11.5. Удобство нотации
11.5.1. "Умные" указатели
11.5.2. "Умные" ссылки
1 1.5.3. Перегрузка операторов инкремента и
декремента
11.5.4. Перегрузка
11.5.5. Перегрузка оператора "запятая"
11.6. Добавление в C++ операторов
11.6.1. Оператор возведения в степень
1 1.6.2. Операторы, определяемые пользователем
1 1.6.3. Составные операторы
11.7. Перечисления
11.7.1 Перегрузка на базе перечислений
11.7.2. Тип Boolean
Глава 12. Множественное наследование
12.1.Введение
12.2. Базовые классы
12.3. Виртуальные базовые классы
12.3.1. Виртуальные базовые классы и
виртуальные функции
12.4. Модель размещения объекта в памяти
12.4.1. Размещение в памяти объекта
виртуального базового класса
12.4.2. Виртуальные базовые классы и
приведение типов
12.5. Комбинирование методов
1 2.6. Полемика о множественном наследовании
12.7. Делегирование
12.8. Переименование
12.9. Инициализаторы членов и базовых
классов
Глава 13. Уточнения понятия класса
13.1 Введение
13.2. Абстрактные классы
13.2.1. Абстрактные классы и обработка ошибок
13.2.2. Абстрактные типы
13.2.3. Синтаксис
13.2.4. Виртуальные функции и конструкторы
13.3. Константные функции-члены
1 3.3.1. Игнорирование const при приведении типов

13.3.2. Уточнение определения const
13.3.3. Ключевое слово mutable и приведение
типов
13.4. Статические функции-члены
13.5. Вложенные классы
13.6. Ключевое слово inherited
13.7. Ослабление правил замещения
13.7.1. Ослабление правил аргументов
13.8. Мультиметоды
13.8.1. Когда нетмультиметодов
13.9. Защищенные члены
13.10. Улучшенная генерация кода
13.11. Указатели на функции-члены
Глава 14. Приведение типов
14.1. Крупные расширения
14.2. Идентификация типа во время исполнения

14.2.1. Зачем нужен механизм RTTI
14.2.2. Оператор dynamic_cast
14.2.3. Правильное и неправильное
использование RTTI
14.2.4. Зачем давать "опасные средства"
14.2.5. Оператор typeid()
14.2.6. Модель размещения объекта в памяти
14.2.7. Простой ввод/вывод объектов
14.2.8. Другие варианты
14.3. Новая нотация для приведения типов
14.3.1. Недостатки старых приведений типов
14.3.2. Оператор static_cast
14.3.3. Оператор reinterpret_cast
14.3.4. Оператор const.cast
14.3.5. Преимущества новых приведений типов
Глава 15. Шаблоны
15.1.Введение
15.2. Зачем нужны шаблоны
15.3. Шаблоны классов
15.3.1. Аргументы шаблонов, не являющиеся
типами
15.4. Ограничения на аргументы шаблонов
15.4.1. Ограничения за счет наследования
15.4.2. Ограничения за счет использования
15.5. Устранение дублирования кода
15.6. Шаблоны функций
15.6.1. Выведение аргументов шаблона функции
15.6.2. Задание аргументов шаблона функции
15.6.3. Перегрузка шаблона функции
15.7. Синтаксис
15.8. Методы композиции
15.8.1. Представление стратегии реализации
15.8.2. Представление отношений порядка
15.9. Соотношения между шаблонами классов
15.9.1. Отношения наследования
15.9.2. Преобразования
15.9.3. Шаблоны-члены
15.10. Инстанцирование шаблонов
15.10.1 .Явное инстанцирование
15.10.2. Точка инстанцирования
15.10.3. Специализация
15.10.4. Нахождение определений шаблонов
15.11. Последствия введения шаблонов
15.1 1.1 .Отделение реализации от интерфейса
15.1 1.2. Гибкость и эффективность
15.1 1.3. Влияние на другие компоненты C++
Глава 16. Обработка исключений
16.1.Введение
16.2. Цели и предположения
16.3. Синтаксис
16.4. Группировка
16.5. Управление ресурсами
16.5.1. Ошибки в конструкторах
16.6. Возобновление или завершение?
1 6.6.1 .Обходные пути для реализации
возобновления
16.7. Асинхронные события
16.8. Распространение на несколько уровней
16.9. Статическая проверка
16.9.1. Вопросы реализации
16.10. Инварианты
Глава 17. Пространства имен
17.1. Введение
17.2. Для чего нужны пространства имен
17.2.1. Обходные пути
17.3. Какое решение было бы лучшим?
17.4. Решение: пространства имен
17.4.1. Мнения по поводу пространств имен
17.4.2. Внедрение пространств имен
17.4.3. Псевдонимы пространства имен
17.4.4. Использование пространств имен для
управления версиями
17.4.5. Технические детали
1 7.5. Классы и пространства имен
17.5.1. Производные классы
17.5.2. Использование базовых классов
17.5.3. Исключение глобальных статических
объявлений
17.6. Совместимость с С
Глава 1 8. Препроцессор С
Алфавитный указатель


Об авторе

Страуструп Б.
Доктор Бьярн Страуструп (Bjarne Straustrup) — изобрел и первым реализовал язык программирования С++ и написал книгу Язык программирования С++. Сейчас он работает профессором компьютерных наук в Техническом колледже Техасского университета агрокультуры и машиностроения (College of Engineering Chair in Computer Science Professor at Texas A&M University), является членом Национальной академии технических наук США (U.S. National Academy of Engineering) и сотрудником корпорации AT&T. До перехода на академическую работу он много лет работал в исследовательском центре AT&T Bell Labs. Он также является одним из членов-учредителей международного комитета по стандартизации языка С++ (ISO С++).

Отзывы

Книга хорошая, переплет плохой  [30 August 2011]
Отличная книга, несмотря на то, что повествование, конечно, устарело, однако, это не отменяет интересного содержания. В книге рассказывается о процессе рождения языка С++, объясняются мотивы - почему было принято то, или иное решение. Эту книгу не нужно читать, если программирование для вас всего лишь работа, если же вы получаете удовольствие от программирования - прочтите обязательно.

Издание разочаровало - переплет проклеен ужасно - с 30 страницы начали выпадать листы, обложка облезла после одной поездки в метро, в сумке, хотя шрифт хороший, бумага приятная.
Переиздание  [17 June 2011]
Переиздание в отвратительной мягкой обложке. Материал прошлого издания, а в прошлом издании материал позапрошлого. В итоге в 2011 году имеем информацию 2000 года. Мягкая обложка, плохо проклеена, после прочтения 200 страниц уже начинает разваливаться. Сама книга нестандартного размера, маленькая, видимо хотели сделать брошюрку. Качество бумаги хорошее, размер шрифта удобный. Сама книга отличная, читается легко и с интересом. Опечатки имеются. Желающим приобрести советую поискать прошлое издание, в твердой обложке

Последние поступления в рубрике "С, С++, C#"



Справочник программиста по C/C++ Справочник программиста по C/C++ Шилдт Г.

Герберт Шилдт, легендарный автор книг по программированию, столь умело выделил основные элементы языков С и C++ и организовал их в таком удобном формате, что вы быстро и легко найдете ответы на все свои вопросы по программированию на С и C++. В......

C++ для инженерных и научных расчетов. Руководство C++ для инженерных и научных расчетов. Руководство Готтшлинг П.

С развитием вычислительной техники научные и инженерные проекты становятся все более крупными и сложными, и все более вероятно, что все новые проекты будут разрабатываться на C++. По мере того, как встраиваемое аппаратное обеспечение становится все......

C# 8.0. Скорая помощь для программистов на C# 8.0. Карманный справочник C# 8.0. Скорая помощь для программистов на C# 8.0. Карманный справочник Албахари Д.

Когда вам нужны ответы на вопросы по программированию на языке С# 8.0, этот узкоспециализированный справочник предложит именно то, что необходимо знать — без всяких длинных введений или раздутых примеров. Легкое в чтении и идеальное в качестве......

Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Страуструп Б., Дизайн и эволюция языка С++ в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.