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

Современный C++ для программистов, инженеров и ученых
sku: 12520062
ACCORDING TO OUR RECORDS THIS PRODUCT IS NOT AVAILABLE NOW
820.00 грн.
Shipping from: Ukraine
   Description
[html]По мере развития вычислительной техники научные и инженерные проекты становятся все более крупными и сложными, и все более вероятно, что все новые проекты будут разрабатываться на C++. По мере того, как встраиваемое аппаратное обеспечение становится все более мощным, его программное обеспечение также все чаще разрабатывается на C++.Овладение языком программирования C++ дает вам навыки программирования почти на каждом уровне - от близкого к аппаратному обеспечению до абстракций высшего уровня. Короче говоря, C++ - это тот язык, который научные и технические специалисты должны знать в обязательном порядке.Книга "Современный C++ для программистов, инженеров и ученых" Питера Готтшлинга представляет собой интенсивное введение в язык программирования C++, облегчающее переход к действительно сложным темам, основанным на передовых методах программирования. Автор вводит ключевые понятия с использованием примеров из многих предметных областей, опираясь на свой обширный опыт обучения языку C++ студентов, обучающихся физическим, математическим и инженерным специальностям.Эта книга призвана помочь вам быстро приступить к реальной работе, а затем совершенствовать свои знания и умения, осваивая все более сложные возможности языка - от лямбда-функций до шаблонов выражений. Вы также узнаете, как использовать преимущества мощных библиотек, доступных программистам на C++: стандартной библиотеки шаблонов (STL) и научных библиотек для арифметических вычислений, решения задач линейной алгебры, дифференциальных уравнений или построения графиков.На протяжении всей книги автор показывает, как писать программное обеспечение четко и выразительно, используя парадигмы объектно-ориентированного программирования, обобщенного и метапрограммирования и процедурные методы.К тому времени, когда вы закончите чтение книги, вы освоите все абстракции, необходимые для написания программ на C++, обладающих исключительным качеством и производительностью.- Книга "Современный C++ для программистов, инженеров и ученых" предназначена для обучения ученых, инженеров, и новичков в программировании на C++ эффективному использованию возможностей современного C++ для различных приложений и предметных областей- Книга учит писать ясный, корректный и эффективный код на современном C++- Позволят научиться программированию на C++ даже тем, у кого нет никакого опыта программирования- Включает краткий обзор новейших возможностей C++14Книга "Современный C++ для программистов, инженеров и ученых" входит в культовую серию книг "C++ In-Depth", которую редактирует Бьярне Страуструп - разработчик языка C++. Книга не предполагает у читателя наличия опыта программирования на C++ или иных языках программированияОб авторе:Питер Готтшлинг - основатель компании SimuNova, работающей над проектом библиотеки Matrix Template Library (MTL4), и предлагающей учебные курсы по C++. Он также является членом комитета ISO по стандартизации C++, вице-председателем Германского комитета по стандартизации языка, и основателем группы пользователей C++ в Дрездене. Он получил ученую степень в области компьютерных наук в техническом университете Дрездена в 2002 году. Содержание книги Питера Готтшлинга "Современный C++ для программистов, инженеров и ученых" Предисловие 15Причины для изучения C++ 15Причины для чтения данной книги 16Красавица и чудовище 16Языки в науке и технике 18Соглашения об оформлении 19Благодарности 21Об авторе 23Ждем ваших отзывов! 24Глава 1. Основы C++ 251.1. Наша первая программа 251.2. Переменные 281.2.1. Константы 301.2.2. Литералы 311.2.3. Не сужающая инициализация в C++11 331.2.4. Области видимости 341.3. Операторы 361.3.1. Арифметические операторы 371.3.2. Булевы операторы 401.3.3. Побитовые операторы 411.3.4. Присваивание 421.3.5. Поток выполнения 421.3.6. Работа с памятью 431.3.7. Операторы доступа 431.3.8. Работа с типами 441.3.9. Обработка ошибок 441.3.10. Перегрузка 441.3.11. Приоритеты операторов 451.3.12. Избегайте побочных эффектов! 461.4. Выражения и инструкции 481.4.1. Выражения 481.4.2. Инструкции 481.4.3. Ветвление 491.4.4. Циклы 521.4.5. goto 551.5. Функции 561.5.1. Аргументы 561.5.2. Возврат результатов 581.5.3. Встраивание 591.5.4. Перегрузка 601.5.5. Функция main 621.6. Обработка ошибок 631.6.1. Утверждения 631.6.2. Исключения 651.6.3. Статические утверждения 701.7. Ввод-вывод 701.7.1. Стандартный вывод 701.7.2. Стандартный ввод 711.7.3. Ввод-вывод в файлы 711.7.4. Обобщенная концепция потоков 721.7.5. Форматирование 731.7.6. Обработка ошибок ввода-вывода 751.8. Массивы, указатели и ссылки 781.8.1. Массивы 781.8.2. Указатели 801.8.3. Интеллектуальные указатели 841.8.3.1. unique_ptr 841.8.4. Ссылки 881.8.5. Сравнение указателей и ссылок 881.8.6. Не ссылайтесь на устаревшие данные! 891.8.7. Контейнеры в качестве массивов 901.9. Структурирование программных проектов 921.9.1. Комментарии 921.9.2. Директивы препроцессора 941.10. Упражнения 981.10.1. Возраст 981.10.2. Массивы и указатели 981.10.3. Чтение заголовка файла Matrix Market 99Глава 2. Классы 1012.1. Программируйте универсальный смысл, а не технические детали 1012.2. Члены 1032.2.1. Переменные-члены 1042.2.2. Доступность 1042.2.3. Операторы доступа 1072.2.4. Декларатор static в классах 1082.2.5. Функции-члены 1082.3. Установка значений. Конструкторы и присваивания 1102.3.1. Конструкторы 1102.3.2. Присваивание 1202.3.3. Список инициализаторов 1212.3.5. Семантика перемещения 1252.4. Деструкторы 1292.4.1. Правила реализации 1302.4.2. Корректная работа с ресурсами 1302.5. Резюме генерации методов 1372.6. Доступ к переменным-членам 1372.6.1. Функции доступа 1372.6.2. Оператор индекса 1392.6.3. Константные функции-члены 1402.6.4. Ссылочная квалификация членов 1412.7. Проектирование перегрузки операторов 1432.7.1. Будьте последовательны 1432.7.2. Вопросы приоритетов 1442.7.3. Члены или свободные функции 1452.8. Упражнения 1472.8.1. Полиномы 1472.8.2. Перемещающее присваивание 1482.8.3. Список инициализаторов 1482.8.4. Спасение ресурса 148Глава 3. Обобщенное программирование 1493.1. Шаблоны функций 1493.1.1. Инстанцирование 1503.1.2. Вывод типа параметров 1523.1.3. Работа с ошибками в шаблонах 1563.1.4. Смешение типов 1573.1.5. Унифицированная инициализация 1583.1.6. Автоматический возвращаемый тип 1593.2. Пространства имен и поиск функций 1593.2.1. Пространства имен 1593.2.2. Поиск, зависящий от аргумента 1623.2.3. Квалификация пространств имен или ADL 1663.3. Шаблоны классов 1683.3.1. Пример контейнера 1683.3.2. Проектирование унифицированных интерфейсов классов и функций 1703.4. Вывод и определение типа 1773.4.1. Автоматический тип переменных 1773.4.2. Тип выражения 1783.4.3. decltype(auto) 1793.4.4. Определение типов 1803.5. Немного теории шаблонов: концепции 1823.6. Специализация шаблонов 1833.6.1. Специализация класса для одного типа 1833.6.2. Специализация и перегрузка функций 1863.6.3. Частичная специализация 1873.6.4. Частично специализированные функции 1893.7. Параметры шаблонов, не являющиеся типами 1913.8. Функторы 1943.8.1. Функциональные параметры 1963.8.2. Составные функторы 1973.8.3. Рекурсия 1993.8.4. Обобщенное суммирование 2023.9. Лямбда-выражения 2033.9.1. Захват 2043.9.2. Захват по значению 2053.9.3. Захват по ссылке 2063.9.4. Обобщенный захват 2073.9.5. Обобщенные лямбда-выражения 2083.10. Вариативные шаблоны 2093.11. Упражнения 2113.11.1. Строковое представление 2113.11.2. Строковое представление кортежей 2113.11.3. Обобщенный стек 2123.11.4. Итератор вектора 2123.11.5. Нечетный итератор 2123.11.6. Нечетный диапазон 2133.11.7. Стек bool 2133.11.8. Стек с пользовательским размером 2133.11.9. Вывод аргументов шаблона, не являющихся типами 2133.11.10. Метод трапеций 2133.11.11. Функтор 2143.11.12. Лямбда-выражения 2143.11.13. Реализация make_unique 214Глава 4. Библиотеки 2154.1. Стандартная библиотека шаблонов 2164.1.1. Вводный пример 2164.1.2. Итераторы 2174.1.3. Контейнеры 2234.1.4. Алгоритмы 2324.1.5. За итераторами 2394.2. Числовые алгоритмы 2404.2.1. Комплексные числа 2414.2.2. Генераторы случайных чисел 2444.3. Метапрограммирование 2564.3.1. Пределы 2564.3.2. Свойства типов 2584.4. Утилиты 2604.4.1. tuple 2604.4.2. function 2644.4.3. Оболочка для ссылок 2664.5. Время - сейчас! 2674.6. Параллельность 2704.7. Научные библиотеки за пределами стандарта 2734.7.1. Иная арифметика 2734.7.2. Арифметика интервалов 2744.7.3. Линейная алгебра 2744.7.4. Обычные дифференциальные уравнения 2754.7.5. Дифференциальные уравнения в частных производных 2754.7.6. Алгоритмы на графах 2754.8. Упражнения 2764.8.1. Сортировка по абсолютной величине 2764.8.2. Контейнер STL 2764.8.3. Комплексные числа 276Глава 5. Метапрограммирование 2795.1. Пусть считает компилятор 2795.1.1. Функции времени компиляции 2805.1.2. Расширенные функции времени компиляции 2825.1.3. Простота 2835.1.4. Насколько константны наши константы 2855.2. Предоставление и использование информации о типах 2875.2.1. Свойства типов 2875.2.2. Условная обработка исключений 2905.2.3. Пример применения константности 2915.2.4. Стандартные свойства типов 2995.2.5. Свойства типов, специфичные для предметной области 3005.2.6. enable_if 3015.2.7. Еще о вариативных шаблонах 3055.2.7.1. Вариативный шаблон класса 3055.3. Шаблоны выражений 3085.3.1. Реализация простого оператора 3095.3.2. Класс шаблона выражения 3135.3.3. Обобщенные шаблоны выражений 3155.4. Метанастройка: написание собственной оптимизации 3175.4.1. Классическое развертывание фиксированного размера 3195.4.2. Вложенное развертывание 3225.4.3. Динамическое развертывание: разминка 3285.4.4. Развертывание векторных выражений 3305.4.5. Настройка шаблона выражения 3325.4.6. Настройки операций сверток 3355.4.7. Настройка вложенных циклов 3435.4.8. Резюме 3495.5. Упражнения 3505.5.1. Свойства типов 3505.5.2. Последовательность Фибоначчи 3515.5.3. Метапрограммирование НОД 3515.5.4. Шаблон векторного выражения 3515.5.5. Метасписок 352Глава 6. Объектно-ориентированное программирование 3536.1. Фундаментальные принципы 3546.1.1. Базовые и производные классы 3546.1.2. Наследование конструкторов 3586.1.3. Виртуальные функции и полиморфные классы 3596.1.4. Функторы и наследование 3656.2. Устранение избыточности 3676.3. Множественное наследование 3686.3.1. Множественные родители 3686.3.2. Общие прародители 3696.4. Динамический выбор с использованием подтипов 3756.5. Преобразования 3786.5.1. Преобразование между базовыми и производными классами 3796.5.2. const_cast 3836.5.3. reinterpret_cast 3846.5.4. Преобразования в стиле функций 3846.5.5. Неявные преобразования 3866.6. CRTP 3876.6.1. Простой пример 3876.6.2. Повторно используемый оператор доступа 3896.7. Упражнения 3916.7.1. Ромбовидное наследование без избыточности 3916.7.2. Наследование класса вектора 3926.7.3. Функция клонирования 392Глава 7. Научные проекты 3937.1. Реализация решателей ОДУ 3937.1.1. Обыкновенные дифференциальные уравнения 3947.1.2. Алгоритмы Рунге-Кутты 3967.1.3. Обобщенная реализация 3987.1.4. Дальнейшее развитие 4057.2. Создание проектов 4067.2.1. Процесс построения 4067.2.2. Инструменты для построения приложений 4117.2.3. Раздельная компиляция 4157.3. Несколько заключительных слов 421Приложение А. Скучные детали 423A.1. О хорошем и плохом научном программном обеспечении 423A.2. Детали основ 430A.2.1. О квалифицирующих литералах 430A.2.2. Статические переменные 431A.2.3. Еще немного об if 432A.2.4. Метод Даффа 434A.2.5. Еще немного о функции main 434A.2.6. Утверждения или исключения? 435A.2.7. Бинарный ввод-вывод 437A.2.8. Ввод-вывод в стиле C 438A.2.9. Сборка мусора 439A.2.10. Проблемы с макросами 440A.3. Реальный пример: обращение матриц 442A.4. Больше о классах 453A.4.1. Указатель на член 453A.4.2. Примеры инициализации 453A.4.3. Обращение к многомерным массивам 454A.5. Генерация методов 457A.5.1. Управление генерацией 459A.5.2. Правила генерации 460A.5.3. Ловушки и советы по проектированию 465A.6. Подробнее о шаблонах 469A.6.1. Унифицированная инициализация 469A.6.2. Какая функция вызвана? 470A.6.3. Специализация для определенного аппаратного обеспечения 473A.6.4. Бинарный ввод-вывод с переменным числом аргументов 474A.7. Использование std::vector в C++03 475A.8. Динамический выбор в старом стиле 476A.9. Подробности метапрограммирования 476A.9.1. Первая метапрограмма в истории 476A.9.2. Метафункции 478A.9.3. Обратно совместимые статические утверждения 480A.9.4. Анонимные параметры типа 481A.9.5. Проверка производительности динамического развертывания 484A.9.6. Производительность умножения матриц 485Приложение Б. Инструментарий для программирования 487Б.1. gcc 487Б.2. Отладка 488Б.2.1. Текстовая отладка 489Б.2.2. Отладка с графическим интерфейсом: DDD 491Б.3. Анализ памяти 493Б.4. gnuplot 494Б.5. Unix, Linux и Mac OS 496Приложение В. Определения языка 499В.1. Категории значений 499В.2. Обзор операторов 499В.3. Правила преобразования 502В.3.1. Повышение 503В.3.2. Другие преобразования 503В.3.3. Обычные арифметические преобразования 504В.3.4. Сужение 505Библиография 506Предметный указатель 509[/html]
   Technical Details
categoryTitle: Научная и техническая литература
rating: 0
   Price history chart & currency exchange rate

Customers also viewed