Bookz

Содержание

Начальный+/Средний уровень

7. «Java. Создание приложений» и 8. «Java Code. Сборник исходников», Алексей Крючков

Годы издания: 2018 – 2020.Количество страниц: 33-39.Знания читателя: уровень начальный+.

Алексей Крючков – писатель «универсальный». Из-под его пера выходили и сборники анекдотов, и описание операционной системы Linux Mint, и пособия по системам автоматизированного проектирования, и книги для изучения Java.

В категорию «Лучшие книги по Java 2021» его работы отнести можно, хоть они и не отличаются полнотой изложения. Несмотря на неширокий охват темы, творчество автора рекомендуется к ознакомлению.

Книги про Java в исполнении Крючкова раскрывают некоторые интересные моменты программирования в среде NetBeans, разработки веб-приложений с оптимизацией под Google Chrome. По ходу изучения читатель сможет сам написать четыре приложения, ознакомиться с алгоритмами создания сообщений а-ля Android, удаленного определения операционной системы, генератора паролей.

9. «Java. Библиотека профессионала», Хорстманн, Корнелл

Годы издания: 2009 – 2021.Количество страниц: 1500 – 2000 (2 тома), в зависимости от издания.Знания читателя: уровень начальный+.

«Библиотека профессионала» – лучшая книга по Java, если вы уже понимаете общие принципы объектно-ориентированного программирования. 
Работу Хорстманна и Корнелла сложно назвать самоучителем для начинающих, это, скорее, справочное пособие, регулярно обновляемое с учетом эволюции языка программирования.

Рекомендуется знакомство с 10 и 11 изданиями. Они наиболее полно соответствуют реалиям сегодняшнего дня. В первом томе даются основы языка. Второй том рассматривает средства построения GUI, создание корпоративных приложений, другие актуальные вопросы программирования на Java.

10. «Алгоритмы на Java», Роберт Седжвик, Кевин Уэйн

Годы издания: 2013 – 2021.Количество страниц: 843.Знания читателя: уровень начальный+.

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

Книга рекомендуется для самого широкого круга читателей, серьезно решивших стать профессиональными java-программистами. Пособие предполагает изучение 50 алгоритмов, с которыми должен ознакомиться каждый разработчик.

11. «Чистый код. Создание, анализ и рефакторинг», Роберт Мартин

Год издания: 2018.Количество страниц: 464.Знания читателя: начальный/средний уровень.

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

Первая часть работы посвящена искусству написания «чистого» кода. Во второй Роберт Мартин приводит множество примеров хорошего программирования.

Рекомендуются к ознакомлению и другие книги этого автора: «Идеальный программист. Как стать профессионалом разработки ПО» и «Чистая архитектура. Искусство разработки ПО».

12. «Java. Эффективное программирование», Джошуа Блох

Годы издания: 2001 – 2021.Количество страниц: 440 (зависит от издания).Знания читателя: средний уровень.

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

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

В книге рассматриваются java.io, java.util, java.lang, ряд других библиотек, но работа не затрагивает GUI и специализированных программных интерфейсов приложений.

«Искусство программирования»

Дональд Кнут

У третьего (актуального) издания на английском языке семь томов. На русский переведено четыре из них: две части первого тома, второй и третий, а также том 4А.

Перевод с английского — И. В. Красиков, С. Г. Тригуб, Ю. Г. Гордиенко

Издательство «Вильямс», 2020 год, 720 + 160 + 832 + 960 с.

Оригинальное название: The Art of Computer Programming by Donald Knuth

Зачем читать: чтобы прокачаться в вычислительной математике и анализе алгоритмов.

Сложность:        

Самый классический и самый фундаментальный труд в нашей подборке: многотомник от всемирно признанного гуру в области программирования, автора 19 монографий и более сотни статей.

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

Далее в этом и последующих томах автор учит анализировать и оценивать алгоритмы, даёт «золотые решения» классических задач (сортировка, поиск, обход деревьев) — и сравнивает, чем хорошо и плохо каждое. Всё это помогает выбирать оптимальные вычислительные стратегии в реальных проектах.

Заметки на полях: читать непросто, но нужно. Тем более что про классику алгоритмизации и вычислительную сложность до сих спрашивают на серьёзных собеседованиях. А первый том «Искусства» даже завершается цитатой Билла Гейтса:

«Если вы смогли дочитать это до конца, вы определённо должны отправить мне своё резюме».

Машинное обучение и TensorFlow

Описание книги:
Знакомство с машинным обучением и библиотекой TensorFlow похоже на первые уроки в автошколе, когда вы мучаетесь с параллельной парковкой, пытаетесь переключить передачу в нужный момент и не перепутать зеркала, лихорадочно вспоминая последовательность действий, в то время как ваша нога нервно подрагивает на педали газа. Это сложное, но необходимое упражнение. Так и в машинном обучении: прежде чем использовать современные системы распознавания лиц или алгоритмы прогнозирования на фондовом рынке, вам придется разобраться с соответствующим инструментарием и набором инструкций, чтобы затем без проблем создавать собственные системы.
Новички в машинном обучении оценят прикладную направленность этой книги, ведь ее цель – познакомить с основами, чтобы затем быстро приступить к решению реальных задач. От обзора концепций машинного обучения и принципов работы с TensorFlow вы перейдете к базовым алгоритмам, изучите нейронные сети и сможете самостоятельно решать задачи классификации, кластеризации, регрессии и прогнозирования.

Релевантный поиск с использованием Elasticsearch и Solr

Описание книги:
Данная книга поможет вам раскрыть суть и механику релевантного поиска на базе библиотеки Apache Lucene. На примере поисковых систем Elasticsearch и Solr вы научитесь строго контролировать ранжирование результатов поиска на основе четких критериев. Вы поймете, как программировать релевантность, как подключить вторичные источники данных, классификаторы, организовать анализ текста. Наконец вы узнаете, как можно улучшить релевантность поиска за счет применения приемов машинного обучения, персонализации и семантического поиска.
Издание предназначено разработчикам, стремящихся создавать интеллектуальные поисковые приложения на основе Elasticsearch или Solr.

Алгоритм для технической литературы

Выглядит он так:

  1. Формулируем задачу, которую мы хотим решить, прочитав книгу;
  2. Начинаем читать медленно и внимательно, перепечатывая каждый из приведенных листингов;
  3. Регулярно — раз в полчаса-час — делаем паузу и вспоминаем, что именно мы делали предыдущий час;
  4. Заканчивая очередную тему, смотрим, достаточно ли мы узнали для того, чтобы решить задачу;
  5. Медленно, но верно дочитываем до конца;
  6. Еще раз вспоминаем, про что была книга;
  7. Пишем программу, используя максимум того, что было в книге.

Формулируем задачу, которую мы хотим решить, прочитав книгу

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

Начинаем читать медленно и внимательно, перепечатывая каждый из приведенных листингов

Ключевое слово «медленно» — не нужно торопиться, особенно если в этой теме вы еще ничего не понимаете или понимаете не все. Здесь принцип тот же, что и с книжкой по ruby: ручной труд порождает ошибки —> ошибки порождают задачи –> решение задач тренирует мозг и добавляет понимания.

Регулярно — раз в полчаса-час — делаем паузу и вспоминаем, что именно мы делали предыдущий час

Как ни странно, пауза в 5-10 минут позволяет мозгу структурировать информацию, а значит лучше ее сохранить и оперативней доставать, если понадобится.

Заканчивая очередную тему, смотрим, достаточно ли мы узнали для того, чтобы решить задачу

И если достаточно, то либо заканчиваем чтение (вернемся к этой книге, когда появится в этом необходимость), либо дополняем и расширяем задачу

Важно, что сделать это нужно до того, как вы начнете читать дальше: попробуйте дополнить задачу и придумать, как ее можно было бы решить в идеальном мире

Медленно, но верно дочитываем до конца

Ну или перестаем читать, потому что узнали все, что было нужно.

Еще раз вспоминаем, про что была книга

Я смотрю оглавление и воспроизвожу в голове, о чем шла речь, потом просматриваю листинги и вспоминаю, какие там ошибки были у меня. Если встречаются очень объемные и сложные программы, то можно в самых сложных местах в каждой строке прокомментировать, что и зачем там происходит.

Важно! Пишем программу, используя максимум того, что было в книге

Наш мозг крайне рациональная штука и то, что не используется, очень быстро отмирает и забывается. Чтобы новые знания улеглись на свои места, нужно применить их сразу.

На этом мой алгоритм заканчивается. Если ему следовать, то можно извлечь из каждой книги максимум пользы. Но все же главное — это не забывать, что читать книгу хоть как-нибудь в 100500 раз полезнее, чем откладывать прочтение, чтобы все сделать правильно, но потом.

The Mathematics of Secrets: Cryptography from Caesar Ciphers to Digital Encryption

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

Разработка чат-ботов и разговорных интерфейсов

Описание книги:
В книге рассказывается о работе диалоговых интерфейсов как способе взаимодействия машины с людьми на естественном языке. Вы научитесь разрабатывать чат-ботов для выполнения различных прикладных задач с помощью платформ Microsoft Bot Framework, DialogFlow и Twilio, а также изучите механизмы развертывания чат-ботов на платформах мессенджеров типа Facebook. В заключении освоите отправку и отслеживание сообщений на платформе Twitter, а также поэкспериментируете с технологиями Google Assistant и Amazon Alexa.
Издание будет полезно начинающим разработчикам в области искусственного интеллекта

Машинное обучение. Наука и искусство построения алгоритмов, которые извлекают знания из данных

Описание книги:
Перед вами один из самых интересных учебников по машинному обучению – разделу искусственного интеллекта, изучающего методы построения моделей, способных обучаться, и алгоритмов для их построения и обучения. Автор воздал должное невероятному богатству предмета и не упустил из виду объединяющих принципов. Читатель с первых страниц видит машинное обучение в действии, но без не нужных на первых порах технических деталей. По мере изучения предмета тщательно подобранные примеры, сопровождаемые иллюстрациями, постепенно усложняются.
В книге описан широкий круг логических, геометрических и статистических моделей, затрагиваются и такие находящиеся на переднем крае науки темы, как матричная факторизация и анализ РХП

Особое внимание уделено важнейшей роли признаков. Устоявшаяся терминология дополняется введением в рассмотрение новых полезных концепций

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

Машинное обучение с использованием библиотеки Н2О

Описание книги:
Н2О – простая в использовании и открытая библиотека, которая поддерживает большое количество операционных систем и языков программирования, а также масштабируется для обработки больших данных. Эта книга научит вас использовать алгоритмы машинного обучения, реализованные в Н2О, с упором на наиболее важные для продуктивной работы аспекты. Рассмотрены глубокое обучение, случайный лес, обучение на неразмеченных данных и ансамбли моделей.
В российское издание добавлены дополнительно два приложения, описывающих новейшие модули Н2О – Deep Water и Stacked Ensemble. Их также можно найти в репозитории https://github.com/statist-bhfz/h2o_book_translate.
Издание предназначено для специалистов по анализу данных, желающих изучить и применять на практике относительно новый, но многообещающий инструмент – библиотеку Н2О.

Глубокое обучение без математики. Том 2. Практика

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

Разработка интеллектуальных систем

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

Идеи машинного обучения. От теории к алгоритмам

Описание книги:
Машинное обучение – один из самых быстро развивающихся разделов информатики с приложениями в самых разных областях. Цель этой книги – познакомить читателя с фундаментальными принципами машинного обучения и характерными для него алгоритмическими парадигмами. Книга содержит обширный свод основополагающих теоретических идей машинного обучения и математические выкладки, благодаря которым эти идеи становятся практическими алгоритмами. Вслед за изложением базовых основ дисциплины рассматривается широкий спектр тем, не нашедших достаточного отражения в предшествующих учебниках: вычислительная сложность обучения, понятия выпуклости и устойчивости, важные алгоритмы, включая стохастический градиентный спуск, нейронные сети и обучение структурированному выводу, а также совсем недавние теоретические концепции, например, PAC-байесовский подход и границы сжатия.
Издание ориентировано на студентов старших курсов, обучающихся информатике, техническим наукам, математике или статистике, а также может быть полезно исследователям, желающим углубить свои теоретические знания. Предполагается, что читатель знаком с основами теории вероятностей, линейной алгебры, математического анализа и теории алгоритмов.

Машинное обучение и безопасность

Описание книги:
Способна ли технология машинного обучения решить проблемы компьютерной безопасности? Или надежда на это является лишь следствием повышенного внимания к машинному обучению?
С помощью этой книги вы изучите способы применения машинного обучения в задачах обеспечения безопасности, таких как выявление вторжения извне, классификация вредоносных программ и анализ сетевой среды

Особое внимание уделено задачам по созданию работоспособных, надежных масштабируемых систем извлечения и анализа данных в сфере обеспечения безопасности.
Издание предназначено инженерам по обеспечению безопасности, а также специалистам по обработке данных научными методами

Шифраторы и радиоразведка. Щит и меч информационного мира. Том 1. Записки криптографа

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

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

Способен ли будет человек уже в недалеком будущем самостоятельно защитить себя от посягательств хакеров или преступников? Не воспользуется ли один из злоумышленников возможностью взять под контроль информацию и даже сознание цивилизации?!

Совершенный алгоритм. Основы

Тим Рафгарден — профессор информатики, член института Data Science при Колумбийском университете. Серия книг «Совершенный алгоритм» (англ. Algorithms Illuminated) написана им на основе онлайн-курсов, которые он ведет на платформах Coursera и edX.

Первая часть серии представляет собой
доступное введение в основы алгоритмов.
Объяснение не привязано к каком-либо
языку программирования. В этой книге
автор рассматривает асимптотический
анализ алгоритмов и нотацию О-большое
(а также Омега-большое и Тета-большое),
парадигму «разделяй и властвуй»,
рандомизированные алгоритмы и, конечно,
несколько самых известных алгоритмов
сортировки.

В этой книге читатели также найдут
упражнения на закрепление материала и
разборы решений.

Математические основы машинного обучения и прогнозирования

Описание книги:
Книга предназначена для первоначального знакомства с математическими основами современной теории машинного обучения (Machine Learning) и теории игр с предсказаниями. В первой части излагаются основы статистической теории машинного обучения, рассматриваются задачи классификации и регрессии с опорными векторами, теория обобщения и алгоритмы построения разделяющих гиперплоскостей. Во второй и третьей частях рассматриваются задачи адаптивного прогнозирования в нестохастических теоретико-игровой и сравнительной постановках: предсказания с использованием экспертных стратегий и игры с предсказаниями.
Для студентов и аспирантов, специализирующихся в области машинного обучения и искусственного интеллекта.

Как устроен Python

Отличный вариант для тех, кто хочет изучить Python, не имея никакого бэкграунда в программировании.

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

Автор книги собрал все
самое важное, что узнал об этом языке
за годы работы с ним

Из книги Мэтта Харрисона вы узнаете,
как работают интерпретируемые языки
программирования. Вы познакомитесь с
основными типами (строками, целыми и
вещественными числами), разберетесь,
чем отличаются изменяемые и неизменяемые
данные, научитесь работать со списками,
множествами и словарями.

Эта книга поможет вам освоить язык
Python максимально быстро.

С++

Visual C++, MFC

Круглински, Уингоу, Шеферд. Программирование на Microsoft Visual C++ 6.0 для профессионалов (PDF, 54.4 МБ)

С++

  • ANSI. C++ International Standard (second edition, 2003-10-15) (PDF, 2.3 МБ)
  • Эккель. Философия C++. Введение в стандартный C++ (2-е изд.) (DJVU, 6.4 МБ)
  • Эккель, Эллисон. Философия C++. Практическое программирование (DJVU, 6.5 МБ)
  • Саттер. Решение сложных задач на C++. 87 головоломных примеров с решениями (DJVU, 3.8 МБ)
  • Саттер. Новые сложные задачи на C++. 40 новых головоломных примеров с решениями (DJVU, 3.6 МБ)
  • Страуструп. Язык программирования C++ (2-е, дополненное изд.) (PDF, 2.9 МБ)
  • Stroustrup. The C++ Programming Language (3rd edition) (PDF, 3.4 МБ)
  • Abrahams, Gurtovoy. C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (CHM, 0.62 МБ)
  • Джосьютис. C++. Стандартная библиотека. Для профессионалов (DJVU, 4.8 МБ)
  • Джосьютис. C++. Стандартная библиотека. Для профессионалов (CD к книге) (ZIP, 0.14 МБ)
  • Vandervoorde, Josuttis. C++ Templates: The Complete Guide (CHM, 0.72 МБ)
  • Sutter, Alexandrescu. C++ Coding Standards: 101 Rules, Guidelines, and Best Practices (CHM, 0.51 МБ)
  • Голуб. Веревка достаточной длины, чтобы выстрелить себе в ногу. Правила программирования на C и C++ (PDF, 1.29 МБ)
  • Meyers. Effective C++. More effective C++ (CHM, 2.0 МБ)
  • Дьюхэрст. Скользкие места C++. Как избежать проблем при проектировании и компиляции ваших программ (DJVU, 9.3 МБ)
  • Дьюхэрст. C++. Священные знания (DJVU, 6.7 МБ)

Анализ данных и машинное обучение на платформе MS SQL Server

Описание книги:
В учебном пособии рассматриваются современные технологии анализа данных и машинного обучения и их реализация на платформе MS SQL Server. Приводятся предпосылки появления аналитических технологий и теоретические и практические аспекты использования хранилищ данных, оперативной аналитической обработки (On-Line Analytical Processing, OLAP) и Data Mining, а также их реализация на платформе MS SQL Server. Рассматривается пример создания хранилища данных, OLAP-куба и работы с ним с использованием клиента MS Excel. Подробно рассматриваются инструментальные средства подготовки данных и алгоритмы решения типовых задач Data Mining (регрессия, классификация, кластеризация, поиск ассоциативных связей, анализ последовательностей, прогнозирование, нейронные сети) на платформе MS SQL Server с использование MS Excel.

Внедрение Splunk 7

Описание книги:
Среди систем, созданных для агрегации, систематизации и прочей автоматизации работы с логами, Splunk – один из самых мощных. Он позволит следить за тонкостями жизни всех ваших систем, особенно если их много и они достаточно распределенные.
Splunk – ведущая платформа, реализующая эффективные методологии поиска, мониторинга и анализа больших данных с постоянно растущим объемом. Эта книга позволит вам реализовать новые услуги и использовать их для быстрой и эффективной обработки машинных данных.
Вы познакомитесь со всеми возможностями и улучшениями в Splunk 7, включая новые модули Splunk Cloud и Machine Learning Toolkit, научитесь эффективно использовать поисковые запросы и метасимволы, а также работать с полями и расширениями диаграмм.
Издание будет полезно всем, кто занимается информационной безопасностью в организации и выявлением инцидентов ИБ.

Искусственный интеллект и универсальное мышление

Описание книги:
Книга содержит доступное введение в обширную и сложную область искусственного интеллекта

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

Разработка

Фредерик Брукс. Мифический человеко-месяц.

Несмотря на то, что IT мир со времени написания этой книги сильно изменился, очень многие мысли из неё актуальны до сих пор. Например, глава «Системный программный продукт»: понятно, что сейчас команды разработчиков пишут существенно больше 1000 операторов в год, однако подход к оценке трудозатрат не изменился: программный продукт стоит раза в три дороже просто работающей программы. А также глава, давшая название всей книге и сформулированный в ней закон Брукса:

Эрих Гамма, Джон Влисидис, Ральф Джонсон, Ричард Хелм, (Они же Gang of Four aka GoF aka «Банда четырёх»). Приемы объектно-ориентированного проектирования. Паттерны проектирования.

В новом издании книга называется Паттерны объектно-ориентированного проектирования.

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

Мартин Фаулер. Рефакторинг. Улучшение существующего кода.

Ещё одна книга, которая повлияла на развитие всей отрасли. Вместе с Кентом Беком придумал термин «код с душком»

бабушка Бек.

Книга описывает, что таке рефакторинг, принципы проведения рефакторинга и содержит большой каталог рефакторингов. Помимо этого описаны best practices в разработке ПО (см., например, главу «Рефакторинг и производительность»).

Брайан Керниган, Деннис Ритчи. Язык программирования С.

Учебник языка С от его автора. Написан настолько хорошо, что, несмотря на то, что у С несколько раз обновился стандарт, до сих пор является одной из лучших книг для его изучения.

Брайан У. Керниган, Роб Пайк. Практика программирования.

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

Стив Макконнелл. Совершенный код. Практическое руководство по разработке программного обеспечения.

Data Hiding: Exposing Concealed Data in Multimedia, Operating Systems, Mobile Devices and Network Protocols

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

Список ресурсов

  • medium.freecodecamp.org/the-top-data-structures-you-should-know-for-your-next-coding-interview-36af0831f5e3
  • www.geeksforgeeks.org/commonly-asked-data-structure-interview-questions-set-1
  • prog-cpp.ru/data-list
  • habr.com/post/267855
  • habr.com/post/273687
  • habr.com/post/150732
  • ruhighload.com/%D0%A7%D1%82%D0%BE+%D1%82%D0%B0%D0%BA%D0%BE%D0%B5+%D1%85%D0%B5%D1%88-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B+%D0%B8+%D0%BA%D0%B0%D0%BA+%D0%BE%D0%BD%D0%B8+%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%8E%D1%82
  • ru.wikipedia.org