Список книг для обучения программированию на C++

Список книг для обучения программированию на C++, image #1

Также рекомендуем ознакомиться с нашими статьями:

20 самых рекомендуемых книг для программистов на русском языке

Почему никому не нравится язык программирования C++?

Почему C++ крут, актуален и бессмертен

Почему не лишено смысла писать код на C, а не на C++

[1] Исчерпывающий список книг для знакомства с C++

Fundamentals of Programming C++

Книга содержит огромное количество материала по C++ и явно стремится осветить все основные аспекты языка. В ней вы найдете информацию как про базовые элементы C++, так и про использование библиотеки STL. Автор постоянно обновляет книгу, благодаря чему в ней представлена актуальная версия языка. Множество примеров, как кода, так и работы программы, позволят более эффективно освоить пройденный материал.

C++ Annotations

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

C++ Succinctly

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

Программирование. Принципы и практика с использованием C++

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

Язык программирования C++. Лекции и упражнения

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

The Rook's Guide to C++

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

Learn C++

В нашу подборку книг затесался сайт. Вы думаете, это какая-то ошибка? Как бы не так! Он здесь совсем не случайно. Это онлайн-учебник по всему С++. Его несомненное преимущество в том, что каждая глава богато иллюстрирована кодом, так что материал будет легче усвоить. Все расписано достаточно подробно, но самое главное — материал постоянно дополняется в соответствии с новыми стандартами C++.

Изучаем C++ через программирование игр

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

Объектно-ориентированное программирование в С++

Книга Роберта Лафоре из серии «Классика Computer Science». В ней очень грамотно и полно представлено понятие объектно-ориентированного программирования в C++. Кроме теории, книга предлагает читателю сделать около 100 различных упражнений, которые отточат навык владения основами ООП. Отлично подходит для начинающих программистов.

Structured Programming with C++

Книга, как понятно из названия, научит вас основам структурного программирования. В первую очередь, она стремится донести до читателя, что такое «думать как программист», а уже во вторую — обучить вас языку C++. Материал представлен в удобочитаемой форме. Как и во многих книгах, здесь есть материалы для самопроверки в каждой главе и ответы в конце книги. Автор подчеркивает, что книга фокусируется именно на решении типовых проблем и задач, возникающих при написании программы.

Software Design Using C++

Еще одна онлайн-книга, которая дает материал в соответствии с тремя курсами, которые обычно в американских университетах называются CS 1, CS 2 и «Структуры данных». Новичкам стоит начать именно с изучения материала для курса CS 1, поскольку в нем даются основы программирования на C++. Когда вы освоите данный курс, то можете перейти на следующую ступень и изучить CS 2, а затем уже и структуры данных. http://cis.stvincent.edu/html/tutorials/swd/

Как программировать на C++

Харви и Пол Дейтелы в своей книге решили отойти от привычного порядка введения в C++ и уже с третьей главы знакомят читателя с основами ООП, тем самым не освещая должным образом структурное и процедурное программирование. Большое внимание уделяется объектно-ориентированному проектированию программных систем с помощью графического языка UML2. Данный учебник является одним из самых популярных в мире по C++.

Язык программирования С++. Cтандарт C++11. Краткий курс

Книга представляет собой быстрый (примерно 180 страниц и 14 глав) обзор возможностей С++ и его стандартной библиотеки (стандарт С++11) на достаточно высоком уровне для программистов, которые уже знакомы с языком, или, по крайней мере, имеют значительный опыт в программировании. Эта книга — расширенная версия материала глав 2-5 из четвертого издания «Языка программирования С++».

Язык программирования C++. Базовый курс

Тысяча страниц очень подробного введения в C++, которое детально покрывает буквально все аспекты языка в доступном формате. С самого начала книги читателя знакомят со стандартной библиотекой C++, ее самыми популярными функциями и средствами, что позволяет в скором времени приступить к написанию программ, даже если не были изучены некоторые нюансы языка. Пятое издание (выпущено 16 августа 2012-ого) обновлено для С++11.

How to Think Like a Computer Scientist

Цели этой книги — научить вас использовать язык C++ и мыслить, как исследователь. Она делает акцент на использовании языка C++ как удобного инструмента для научных вычислений. Для знакомства с этой книгой желательна хотя бы математичекая подготовка. Вы научитесь четко формулировать проблему и затем представлять себе ее решение. И только после этого писать код и проводить тесты.

An Introduction to GCC

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

Эффективное программирование на C++. Практическое программирование на примерах

Содержит в себе все то же самое, что и «Учебник для начинающих: С++», но короче в 4 раза. В основном это из-за того, что автор не пытается ввести читателя в программирование, а сразу учит С++ тех, кто пришел с других языков. Может быть немного сложна для понимания, но тем, кто сможет осилить курс, это еще и здорово сократит время изучения.

Упражнения
http://www.stroustrup.com/4thExercises.pdf
Раздел упражнений расположен на официальном сайте создателя языка, Бьерна Страуструпа. Его не стали выпускать в печатном виде, поскольку раздел постоянно обновляется. Документ содержит множество упражнений различных уровней. Данный показатель указывается рядом с номером упражнения. Например, уровень (*1) означает, что задачу вполне реально решить за 10 минут, (*2) — за час, а на (*3) вы можете потратить целый день. Конечно, эти показатели не точные и целиком зависят только от вашего опыта, так что дерзайте! Чем больше задач вы решите, как легких, так и сложных, тем больше вы освоите инструменты несомненно мощного языка C++.

Open Data Structures

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

Data Structures and Algorithm Analysis

Фокус книги сосредоточен на создании эффективных структур данных и алгоритмов. После ее прочтения вы научитесь выбирать или проектировать структуру данных, наиболее подходящую в той или иной части программы. Хороший вариант для изучения этой темы.

[2] Исчерпывающий список книг для углубления в C++

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

The Ultimate Question of Programming, Refactoring, and Everything

С чего начинается знакомство с книгой? Конечно, с заголовка. Вам не показался он смутно знакомым? Если нет, то советую почитать про загадочное число «42». В книге вы найдете 42 (как неожиданно!) рекомендации по написанию кода, которые помогут избежать множество ошибок. Автор Андрей Карпов имеет огромный опыт в анализе кода с помощью статического анализатора PVS-Studio. Он обнаружил, что большая часть ошибок, которые находил анализатор, достаточно типичны и повторяются из одного проекта в другой. Так он решил написать данное руководство, чтобы помочь разработчикам, пишущим на языке C++, писать более совершенный код.

Эффективное использование С++. 55 верных способов улучшить структуру и код ваших программ

Эта книга была написана как обязательная к прочтению для программистов на C++. Ранние издания были нацелены на специалистов, пришедших с С, третье издание поменяло свой курс на мигрирующих с Java и подобных ей языков. Содержит около 50 легко запоминающихся правил, написанных и объясненных в доступной форме.

Наиболее эффективное использование С++. 35 новых рекомендаций по улучшению ваших программ и проектов

Скотт Мейерс задумывал эту книгу как продолжение предыдущей. Описанные в новой книге приемы по сравнению с оной не столь важны, но ознакомиться с ними несомненно стоит. Автор, опираясь на свой многолетний опыт, дает множество советов по написании эффективных программ на языке C++. В частности, вы сможете ознакомиться с примерами обработки исключений и анализом их влияния на структуру и поведение классов и функций С++, а также вариантами практического применения новых возможностей языка, таких как тип bool, ключевые слова mutable и explicit, пространства имен, шаблоны функций членов, стандартная библиотека шаблонов и многое другое.

Эффективный и современный С++. 42 рекомендации по использованию C++11 и C++14

В отличие от двух предыдущих книг, в этой Скотт Мейерс рассказывает обо всех преимуществах использования «фишек» современных стандартов C++11 и C++14. В первую очередь книга подойдет для тех разработчиков, которые хотят перейти с устаревших стандартов, таких как C++03 и более ранних, на современные и научиться эффективно использовать все их функции. В книге подробно освещаются следующие темы:

  • преимущества и недостатки инициализации с помощью фигурных скобок, спецификации noexcept, прямой передачи и функций make интеллектуальных указателей;
  • связь между std::move, std::forward, rvalue-ссылками и универсальными ссылками;
  • методы написания понятных, корректных, эффективных лямбда-выражений;
  • чем std::atomic отличается от volatile, как они используются и как соотносятся с API параллельных вычислений C++;
  • какие из лучших методов «устаревшего» программирования на C++ (т.е. C++98) должны быть пересмотрены при работе с современным C++.

Optimizing Software in C++

В отличие от других руководств по оптимизации кода, представленных в этой подборке, эта книга делает акцент на оптимизации кода на достаточно низком уровне: компилятора и микропроцессора. Пособие является первым из серии книг про низкоуровневую оптимизацию. Автор рассматривает архитектуру x86 для процессоров Intel, AMD и VIA, включая их современные 64-битные версии. Напомним лишь, что к низкоуровневой оптимизации следует прибегать, только если другие способы улучшения кода не дают ощутимый результат.

Эффективное использование STL

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

C++ Today

Книга от издательства O’Reilly, что уже говорит о ее высоком качестве. В ней вы найдете ответы на многие вопросы о современном C++, например:

  • какие «фишки» C++ полезны в облачных вычислениях;
  • почему данный язык является единственным языком высокого уровня, использующимся для разработки приложений в трех мобильных платформах: iOS, Android, Windows;
  • какие изменения языка ожидаются в следующих обновлениях стандарта языка.

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

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

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

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

Эта книга призвана помочь вам быстро приступить к реальной работе, а затем совершенствовать свои знания и умения, осваивая все более сложные возможности языка - от лямбда-функций до шаблонов выражений. Вы также узнаете, как использовать преимущества мощных библиотек, доступных программистам на C++: стандартной библиотеки шаблонов (STL) и научных библиотек для арифметических вычислений, решения задач линейной алгебры, дифференциальных уравнений или построения графиков.

На протяжении всей книги автор показывает, как писать программное обеспечение четко и выразительно, используя парадигмы объектно-ориентированного программирования, обобщенного и метапрограммирования и процедурные методы.
К тому времени, когда вы закончите чтение книги, вы освоите все абстракции, необходимые для написания программ на C++, обладающих исключительным качеством и производительностью.

Решение сложных задач на С++

Книга представляет собой сборник задач. Она содержит подробное обсуждение управления ресурсами и безопасностью исключений в С++. В материале рассматриваются идиомы RAII и pimpl, а также такие темы, как проверка имен, дизайн классов и модель памяти С++.

Новые сложные задачи на C++

Книга является продолжением труда «Решение сложных задач на С++». В ней вы можете найти материал по дженерик-программированию, оптимизации и управлению ресурсами. Эта книга — отличный пример того, как надо писать модульный код в С++, используя non-member функции и принцип единой ответственности. Рассчитана на разработчиков с глубокими познаниями в C++.

Стандарты программирования на С++

«Стандарты» здесь — это не «сколько пробелов я должен ставить перед новой строчкой?», а советы по написанию кода, идиомы и чаще всего встречающиеся грабли, которые помогут вам писать корректный, понятный и эффективный код на С++. Книга дает много полезных рекомендаций как для опытных программистов, так и для разработчиков профессионального уровня. Вторые могут взять за основу материалы из этой книги и разработать собственные стандарты программирования для собственной команды.

C++ Core Guidelines

Данное пособие содержит в себе основные рекомендации по написанию проектов на языке C++, учитывающее как уже существующие стандарты (C++17, C++14, C++11), так и ожидаемые улучшения. Фокус материала сосредоточен на таких темах, как интерфейс, управление ресурсами и памятью, а также параллелизм. Рекомендации не затрагивают такие моменты, как стиль отступов, названия переменных, функций, классов, поскольку достаточно часто в компаниях, занимающихся разработкой, определены для этого собственные стандарты. Материал постоянно обновляется, так что вы всегда получите актуальную информацию прямо из рук создателя C++ — Бьерна Страуструпа.

Google C++ Style Guide

Официальное пособие от компании Google по стилизации кода. Данные рекомендации используются в большинстве open source проектов поискового гиганта, написанных на C++. Google обозначила несколько главных принципов своего руководства:

  • Правила должны быть применимыми на практике.
  • Код должен быть удобочитаемым, ведь его будут изучать и другие люди.
  • Написанный код должен соответствовать уже существующему.
  • При необходимости следует ориентироваться на рекомендации сообщества разработчиков C++.
  • Избегать опасных конструкций.
  • Избегать конструкций, которые большинство C++-программистов посчитали бы сложными.
  • Приступать к оптимизации кода только в случае необходимости.

Шаблоны C++. Справочник разработчика

Это книга о шаблонах в том виде, в котором они существовали до С++11. Она покрывает все от самых начал до продвинутого шаблонного метапрограммирования, подробно объясняет, как работают шаблоны, обсуждает некоторые распространенные грабли. В приложениях несколько замечательных извлечений из правила одного определения (англ. ODR).

Practical Guide to Bare Metal C++

Как известно, программы для встроенных систем и микроконтроллеров разрабатывают в подавляющем большинстве случаев на языке Си. Он считается наиболее быстрым и приближенным к «железу» среди всех языков высокого уровня. Автор этой книги стремится развеять это установившееся понятие и рассказывает о разработке подобных программ на языке C++. Со времен C++98 язык получил существенные изменения, стал более удобным, безопасным, а самое главное — быстрым. Последние исследования говорят о том, что код, написанный на современном C++, по времени исполнения ничтожно мало отличается от аналогичного кода, написанного на Си, зато удобство работы и скорость разработки программы возрастает в разы. Это особенно актуально для систем реального времени. Поэтому C++ имеет все шансы стать языком номер один для разработки под микроконтроллеры.

[3] Исчерпывающий список книг для совершенства в C++

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

Современное проектирование на C++

Книга по продвинутому обобщенному программированию. Описывает фундаментальные идиомы обобщенного программирования, показывая, сколько полезных паттернов (например, аллокаторы маленьких объектов, функторы, фабрики, посетители и мультиметоды) может быть реализовано эффективно, модулярно и исключительно средствами дженерик-программирования.

Practical C++ Metaprogramming

Книга от издательства O’Reilly. В начале читателя знакомят с понятием метапрограммирования. В последующих главах подробно рассматривается практическая сторона вопроса, а именно:

  • работа с библиотеками Boost.MPL, Boost.Hana и Brigand;
  • разбор техник для написания более компактного, красивого и безопасного кода с помощью метапрограммирования;
  • использование «фишек» стандартов C++11 и C++14, позволяющих писать более простой код;
  • написание кода, требующего существенно меньшее количество тестов и затрат на обслуживание.

Книга распространяется свободно, достаточно заполнить регистрационную форму.

The Boost C++ Libraries

Цель данной книги — дать читателю базовые знания о библиотеке Boost. Boost очень часто используется в крупных проектах, написанных на C++, поскольку она предлагает множество функций, которые пока отсутствуют в стандартах C++. Например, реализацию графов, работу с регулярными выражениями, различные настраиваемые псевдослучайные генераторы, и т.д. Использование данной библиотеки позволяет существенно ускорить разработку, за что она получила признание сообщества программистов, пишущих на C++. К тому же знание этой библиотеки будет существенным плюсом в резюме.

C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond

Книга объясняет, что такое метапрограммирование, почему это важно и как уникальное сочетание функций в C ++ делает его особенно мощным языком для метапрограммирования. В нем также освещена библиотека Boost — мощная среда с открытым исходным кодом, базирующаяся на идиомах STL, что делает процесс ее изучения более приятным.

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

Книга, рассказывающая о поддержке многопоточности в С++11. Включает в себя описания библиотеки потоков, atomics-библиотеки, модели памяти С++, блокировок и мьютексов (взаимных исключений) вместе с распространенными проблемами дизайна и дебага мультипоточных приложений.

Advanced Metaprogramming in Classic C++

Руководство, написанное до выхода С++11, фокусирующееся больше на практике, чем на теории. Содержит множество примеров кода, рассказывает о приемах, которые, без сомнения, полезно знать. Если вы сможете смириться с плохим оформлением, то читать эту книгу легче, чем Александреску, и, что спорно, почерпнете из нее больше. Даже профессиональные разработчики смогут найти для себя что-то новое.

Язык программирования С++

Классическое введение в С++, написанное автором этого языка. Легко читается и покрывает все аспекты технологии, начиная от самого языка и стандартной библиотеки и заканчивая парадигмами программирования и философией С++ (последние издания преодолели барьер в 1000 страниц). Четвертое издание, выпущенное в мае 2013 года, покрывает и С++11.

Стандартная библиотека C++. Справочное руководство

Справочник по стандартной библиотеке С++. Второе издание покрывает С++11. В книге основной упор делается на стандартную библиотеку шаблонов (STL), в особенности на алгоритмы, итераторы, контейнеры и функциональные объекты. Помимо этого, в книге освещается современный стиль программирования на C++, в частности:

  • диапазонные циклы for;
  • лямбда-функции;
  • вариативные шаблоны.

Standard C++ IOStreams and Locales: Advanced Programmer's Guide and Reference

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

Стандарт С++

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

Presentation Materials: Overview of the New C++ (C++11/14)

Материалы презентации (слайды и заметки лектора) с трехдневного тренировочного курса, проведенного Скоттом Мэйерсом, который считается уважаемым писателем в данной сфере. И хотя количество поднятых тем мало, качество на высоте. На семинаре обсуждались ключевые функции стандартов C++11 и C++14, а также возможности их использования.

Полный справочник по C++

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

  • подмножество Си;
  • язык С++;
  • библиотека стандартных функций;
  • библиотека стандартных классов;
  • приложения на языке С++.
Больше интересных статей читай по хэштегу #article@physics_math в группе Physics.Math.Code.BooksПомощь с физикой, математикой и программированием, написанием программ и решением задач на заказ, решением экзамена в онлайн-режиме Вы можете получить в группе Физика | Математика | ПрограммированиеЕсли Вы хотите разобраться в физике, математике или программировании, но не понимаете объяснения преподавателей в школе или университете. Однако, у Вас есть желание хорошо закончить учебу и разбираться в точных предметах? Мы сможем помочь Вам в этом. Репетиторов по физике, высшей математике, программированию, информатике, иностранным языкам Вы найдете в
Репетитор | IT mentor
16393 views·1296 shares