# Middle ## C++ - [Скотт Мейерс - Эффективный и современный С++. 42 рекомендации по использованию C++11 и C++14](https://www.ozon.ru/product/effektivnyy-i-sovremennyy-s-42-rekomendatsii-po-ispolzovaniyu-c11-i-c14-effektivnyy-i-sovremennyy-34747131/?sh=CHL5ECEP) Продолжение предыдущей книги Скотта Мейерса. Сборник советов для работы с новыми стандартами C++11 и C++14. - [Параллельное программирование на С++ в действии. Практика разработки многопоточных программ](https://www.ozon.ru/product/parallelnoe-programmirovanie-na-s-v-deystvii-praktika-razrabotki-mnogopotochnyh-programm-217051361/?asb=uff2kmWPtH7totJyGfGyYsPFkTR%252BIxeTdrNvGvZlqzc%253D&asb2=L78tfqOpsfrZsUEmgaZ9kZgbmpv4Jyn9UhBcKxIEO3Q&keywords=%D0%9F%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BD%D0%B0+C%2B%2B&sh=nq_ppy1R) Отличное руководство по многопоточному программированию в составе стандартной библиотеки C++. Представлено подробное описание ко всем примитивам библиотеки. Также даются объяснения работы этих примитивов, скрытыми под абстракциями. - [Герб Саттер - Решение сложных задач на С++](https://www.ozon.ru/product/reshenie-slozhnyh-zadach-na-s-1273200/?sh=gy2qlNpv) и [Герб Саттер - Новые сложные задачи на C++](https://www.ozon.ru/product/novye-slozhnye-zadachi-na-c-2342923/?sh=PpLM-a9C) Сборники, которые описывают разнообразные задачи с точки зрения проектирования и написания кода. Предлагают коллекцию эффективных решений, многие из которых считаются уже классическими идиомами языка. Многие идиомы, представленные в книге, встречаются на проектах практически повсеместно. - [Дэвид Вандевурд - Шаблоны C++. Справочник разработчика](https://www.ozon.ru/product/shablony-c-spravochnik-razrabotchika-145861864) Наиболее свежая и актуальная работа по использованию шаблонов в C++. Это фундаментальная работа, которая описывает наиболее актуальные механизмы шаблонов, внедренные в новых стандартах, вплоть до C++17. Если вам необходимо писать параметризуемый код, то этот справочник станет мощной опорой в написании шаблонного кода. Вы познакомитесь, как с азами этого аспекта метапрограммирования, так различными нюансами того или иного приема. ## Оптимизация приложений - [Курт Гантерог - Оптимизация программ на C++](https://www.ozon.ru/product/optimizatsiya-programm-na-c-proverennye-metody-povysheniya-proizvoditelnosti-140145932/?sh=OlHzzZHG) Хороший сборник советов и рекомендаций по улучшению производительности приложений на языке C++. Некоторые советы основаны на идиомах и конструкциях языка, описанных Гербом Саттером в предложенных книгах выше или Скоттом Майерсом. Потому рекомендуется её прочтение после знакомства с предыдущими книгами. - [Агнер Фог - Оптимизация С++ приложений](https://agner.org/optimize/optimizing_cpp.pdf) или [Набор руководств по оптимизации приложений](https://agner.org/optimize) Практические руководства, которые дают исчерпывающую информацию о потенциальных возможностях оптимизации приложений, разработанных на языке C++, или связанные с взаимодействием с центральным процессором, памятью и т.д. ## Технические навыки - [Джонсон Ральф, Хелм Ричард - Приемы объектно-ориентированного проектирования. Паттерны проектирования](https://www.ozon.ru/product/priemy-obektno-orientirovannogo-proektirovaniya-patterny-proektirovaniya-2457392/?sh=U_1tfTeu) Классический справочник по паттернам проектирования. Каждый паттерн детально разбирается и предлагаются случаи, где они могут быть применены. Это книга будет отличным продолжением после "Паттернов проектирования" от Эрика Фримена. Будьте готовы, что читается она тяжелее, чем предыдущая. - [Гэри Маклин Холл - Адаптивный код: гибкое кодирование с помощью паттернов проектирования и принципов SOLID](https://www.ozon.ru/product/adaptivnyy-kod-gibkoe-kodirovanie-s-pomoshchyu-patternov-proektirovaniya-i-printsipov-solid-142089791/?sh=yQeAC0en) Одна из достойнейших книг, которая простым языком объясняет принципы SOLID. Примеры написаны на языке C#, но это не должно вызвать сложностей при их чтении, т.к. используется минималистичный набор инструкций языка. - [Роберт Мартин - Чистая архитектура. Искусство разработки программного обеспечения](https://www.ozon.ru/product/chistaya-arhitektura-iskusstvo-razrabotki-programmnogo-obespecheniya-martin-robert-martin-robert-211433166) Ещё одна работа дядюшки Боба. На этот раз о том, что прежде чем бросаться писать код, стоит подумать об архитектуре приложения/компонента, каким образом принимать те или иные архитектурные решения, на чем заострить свое внимание во время продумывания дизайна решения. Эта книга станет хорошим началом для тех, кто интересуется архитектурными задачами в разработке ПО, но не знает с чего начать. Знания из этой книги пригодятся подавляющему большинству инженеров, чтобы не допускать очевидные ошибки во время проектирования дизайна ПО к своим задачам. - [Надежда Поликарпова, Анатолий Шалыто - Автоматное программирование](https://www.ozon.ru/product/avtomatnoe-programmirovanie-28260411/?sh=KMISCILZ) Краткое практическое пособие о том, как подходить к написанию программ посредством конечных автоматов. Наверно более простого и элегантного описания теории конечных автоматов и её практического применения сложно будет отыскать. Рекомендуем вам поизучать пару коммерческих работ, выполненных в описанной парадигме. Ссылки к исходному коду вы найдете в конце книги. ## Операционные системы - [Эндрю Таненбаум - Современные операционные системы](https://www.ozon.ru/product/sovremennye-operatsionnye-sistemy-tanenbaum-endryu-bos-herbert-211432884) Одна из лучших книг про операционные системы, которую можно встретить. Фундаментальная работа по их устройству: файловая система, сеть, менеджмент памяти, планировщик задач, многопоточноть и т.д. Каждый раздел книги очень подробно рассказывает про каждую часть устройства операционной системы, при этом все объясняется простым языком. Она старается рассказать про общее устройство ОС, сильно не погружаясь в детали того или иного дистрибутива. - [Марк Руссинович - Внутреннее устройство Windows](https://www.ozon.ru/product/vnutrennee-ustroystvo-windows-russinovich-mark-solomon-devid-russinovich-mark-solomon-devid-211433055) Данная книга обсуждает те же вопросы, что и предыдущая книга, но акцентируется исключительно на ОС Microsoft Windows. Она детально останавливается на каждом аспекте устройства ОС на с проекцией на Windows, а также рассказывает о различных нюансах и аспектах, которые могут быть официально не задекларированы разработчиками. Полезная книга для тех, кто ведет разработку низкоуровневых приложений, которым требуется интенсивное взаимодействие с системными библиотеками ОС. - [Кристофер Негус - Библия Linux](https://www.ozon.ru/product/bibliya-linux-10-e-izdanie-313214724) Данная книга может стать закономерным продолжением после работы Таненбаума. Она детально останавливается на каждом аспекте OS Linux. Все примеры разобраны для популярных дистрибутивов: Red Hat, Ubuntu и Fedorа. Подойдет для разработчиков, которые используют данную ОС в повседневной деятельности. - [Ulrich Drepper - What Every Programmer Should Know About Memory](https://people.freebsd.org/~lstewart/articles/cpumemory.pdf) Хорошая обзорная статья, дающая представление о том, как устроена память компьютера и зачем она так устроена. Даёт как высокоуровневое представление, так и набрасывает низкоуровневых деталей, если есть желание в них углубляться. ## Компьютерные сети - [Эндрю Таненбаум - Компьютерные сети](https://www.ozon.ru/product/kompyuternye-seti-tanenbaum-endryu-uezeroll-devid-tanenbaum-endryu-uezeroll-devid-211432815) Классическая книга по теоретическим основам компьютерных сетей. Содержит в себе подробное описание, начиная с физического уровня и заканчивая протоколами передачи данных. Будет крайне полезна для тех разработчиков, которые плотно занимаются проектами, взаимодействующие с сетями. В ином случае вам будет достаточно просмотреть видеокурс Андрея Созыкина, представленный в разделе [Junior](Junior.md). Его курс базируется на данной книге, но также содержит в себе массу дополнений. - [Олифер Виктор - Компьютерные сети. Принципы, технологии, протоколы](https://www.ozon.ru/product/kompyuternye-seti-printsipy-tehnologii-protokoly-olifer-viktor-grigorevich-olifer-211432410) Ещё одна замечательная книга по основам компьютерных сетей. В каких-то моментах подача информации может показаться чуть сложнее, по сравнению с работой Таненбаума. Потому рекомендуем выбрать ту книгу, повествование которой больше подходит именно для вас. --- [**На предыдущую страницу**](Overview.md) | [**На главную страницу**](../README.md)