16 KiB
Книги и материалы
Pre-Junior
-
Чарльз Петцольд - Код. Тайный язык информатики
Прежде чем начать изучения языка, рекомендуем начать с данной книги. Она расскажет простым языком о том как устроен компьютер, как он работает на физическом уровне. Здесь отсутствуют какие-либо сложные технические или академические детали. Книга содержит в себе основы основ, которые вряд ли в скором времени потеряют свою актуальность. Это поможет вам лучше понять фундаментальные идеи языка C++ позднее.
-
Если вы начинаете изучать язык самостоятельно, то рекомендуем вести разработку первых программ или выполнять упражнения в IDE: Microsoft Visual Studio (Community Edition). На сегодняшний день, это маскимально дружелюбная IDE к новичкам, как в установке, так и в использовании (и при этом абсолютно бесплатно!). Это позволит максимально сконцентрироваться на изучении языка, а не на борьбе с рабочим окружением. На сайте вы найдете небольшой учебник, который расскажет: как установить Visual Studio, создать первый консольный проект и написать первое приложение:
-
Стивен Прата - Язык программирования C++. Лекции и упражнения (шестое издание)
Наиболее актуальная для новичков, с которой стоит начать свой путь изучения C++. Не требует наличия каких-то специфичных знаний, а также имеет набор упражнений к каждой главе. Они помогут вам отработать и понять фундаментальные возможности языка.
-
Липпман Стенли - Язык программирования C++. Базовый курс
Отличное дополнение к книге Стивена Праты. К ней хорошо обращаться параллельно с предыдущей. Рекомендуем вам сами найти баланс между двумя книгами, т.к. информация подается по-разному, и шанс понять ту или иную тему у вас повысится.
-
Адитья Бхаргава - Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих
Отличное вводное пособие в мир алгоритмов. Написано легким языком, который поймет большинство новичков. Также есть немного практических задач, чтобы попробовать написать свои первые алгоритмы.
-
В дополнение к учебнику можно порекомендовать следующие видео от лекторов МФТИ:
- Илья Мещерин
- Тимофей Хирьянов
-
Ulrich Drepper - What Every Programmer Should Know About Memory
Хорошая обзорная статья, дающая представление о том, как устроена память компьютера и зачем она так устроена. Даёт как высокоуровневое представление, так и набрасывает низкоуровневых деталей, если есть желание в них углубляться.
Junior
-
Роберт Мартин - Чистый код. Создание, анализ и рефакторинг
Сегодня вокруг этой книги витает все больше и больше критики. Тем не менее мы всё ещё считаем, что она принесет новичкам больше пользы нежели чем вреда. Эта книга даст вам список рабочих рекомендаций, которые помогут вам писать более структурированный и понимаемый код. Но как и с любым другим знанием, не надо слепо превращать это в карго-культ. Используйте знания с умом. Применяйте техники, которые считаете разумными.
-
Отличный сборник практических рекомендаций по использованию различных языковых средств C++. Данная книга написана во времена стандарта C++03, но ценность информации по-прежнему остается актуальной. Все рекомендации, техники и советы, описанные в книге, масштабируются и активно переиспользуются в новых стандартах языка.
-
Александреску Андрей, Саттер Герб - Стандарты программирования на С++
Небольшая книга, которая описывает общепринятые практики и правила написания кода в коммерческих проектах. Данная книга - это агрегация правил из многих компаний. Данная работа стала прообразом сайта: C++ Core Guidelines. Тем не менее рекомендуем прочитать данную книгу, т.к. она довольно короткая и даст вам общее представление, какие правила написания кода распространены во многих проектах.
-
Фримен Эрик, Робсон Элизабет - Head First. Паттерны проектирования
Отличная книга для начала изучения паттернов проектирования. В качестве неплохой альтернативы можем также предложить сайт refactoring.guru, но в данной книге также имеется масса практических заданий, которые помогут вам лучше усвоить идеи паттернов и в каких случаях их применять.
-
Стив Макконнелл - Совершенный код. Мастер-класс
Не смотря на почтенный возраст книги, её можно считать библией разработчика. Она системно описывает устройство индустрии разработки, а также дает массу советов каким образом расти и развиваться, чтобы стать эффективным специалистом.
-
Томас Кормен - Алгоритмы. Вводный курс
Хорошее продолжение после "Грокаем алгоритмы". Книга знакомит с базовыми распространенными алгоритмами сортировок, работы со списками и т.д., но на более глубоком уровне. Все ещё написана довольно простым языком, потому она может помочь подготовиться к глубокому погружению в алгоритмы.
-
Андрей Созыкин - Компьютерные сети. Базовый курс
Прекрасный курс видеолекций по компьютерным сетям. За основу взяты книги Таненбаума и других классиков по теме. В большинстве проектов этих знаний будет достаточно, чтобы не совершать очевидных ошибок при работе с сетями. Для более глубокого погружения в тему вы можете ознакомиться с книгами Таненбаума или других авторов.
Middle
-
Скотт Мейерс - Эффективный и современный С++. 42 рекомендации по использованию C++11 и C++14
Продолжение предыдущей книги Скотта Мейерса. Сборник советов для работы с новыми стандартами C++11 и C++14.
-
Параллельное программирование на С++ в действии. Практика разработки многопоточных программ
Отличное руководство по многопоточному программированию в составе стандартной библиотеки C++. Представлено подробное описание ко всем примитивам библиотеки. Также даются объяснения работы этих примитивов, скрытыми под абстракциями.
-
Герб Саттер - Решение сложных задач на С++ и Герб Саттер - Новые сложные задачи на C++
Сборники, которые описывают разнообразные задачи с точки зрения проектирования и написания кода. Предлагают коллекцию эффективных решений, многие из которых считаются уже классическими идиомами языка. Многие идиомы, представленные в книге, встречаются на проектах практически повсеместно.
-
Классический справочник по паттернам проектирования. Каждый паттерн детально разбирается и предлагаются случаи, где они могут быть применены. Это книга будет отличным продолжением после "Паттернов проектирования" от Эрика Фримена. Будьте готовы, что читается она тяжелее, чем предыдущая.
-
Одна из достойнейших книг, которая простым языком объясняет принципы SOLID. Примеры написаны на языке C#, но это не должно вызвать сложностей при их чтении, т.к. используется минималистичный набор инструкций языка.
-
Курт Гантерог - Оптимизация программ на C++
Хороший сборник советов и рекомендаций по улучшению производительности приложений на языке C++. Некоторые советы основаны на идиомах и конструкциях языка, описанных Гербом Саттером в предложенных книгах выше или Скоттом Майерсом. Потому рекомендуется её прочтение после знакомства с предыдущими книгами.
-
Надежда Поликарпова, Анатолий Шалыто - Автоматное программирование
Отличное описание того, как подходить к написанию программ посредством конечных автоматов. Наверно более простого и элегантного описания теории конечных автоматов и её практического применения сложно будет отыскать. Рекомендуем вам поизучать пару коммерческих работ, выполненных в описанной парадигме. Ссылки к исходному коду вы найдете в конце книги.
Senior
- Преисполняться в познании индустрии