Пока читал “Игровой движок”, поймал себя на мысли что было бы хорошо поглубже изучить конкурентность. Благо, что уже были несколько книг, но все никак не добирался до них. Сейчас решил не откладывать. Конечно же, начал я с серии “Грокаем”. А так как я вначале прочитал “Игровой движок”, то и буду периодически сравнивать материалы из этих книг.

КДПВ

По-правде говоря, большая часть этой книги в “Игровом движке” раскрыта более детально, с той разницей, что в этой книге приводятся примеры кода и эти примеры на языке Python. Так вот, по-поводу материала, до какого-то времени мне казалось, что вообще зря взялся за книгу, но дальше стало интереснее. Но, по порядку…

В первую очередь надо понимать, что в книге примеры на уровне интерпретируемого языка, а значит что более высокого уровня, чем в том же “Игровом движке”. То есть, тут не будет проблем, которые связаны с конвеерами CPU и все такое, но и совершенно другие задачи. В тех же играх никакой map/reduce на терабайтах данных не нужен :) При этом, тот же закон Амдала или таксономия Флинна остаются актуальными для любых приложений.

Во-вторых, не зависимо от языка, задачи будут делится на CPU-bond/IO-bound, хоть и решения будут отличаться. Но, эта книга не о конкретных решениях, а о принципах. Все задачи придется декомпозировать и это процесс прекрасно описан, так же, как и решать типовые проблемы, вроде race condition, взаимных блокировок или нехватки ресурсов. В книге описываются несколько паттернов с прекрасными короткими демонстрациями в виде небольших проектов.

Кстати, в этой книге встретил развитие закона Амдала - закон Густафсона, который может помочь в том случае, если применение закона Амдала прогнозирует проблемы с работой вашего приложения. Если говорить кратко, то закон Амдала предсказывает предел прироста производительности, что решили проверить в Сандийских национальных лабораториях под руководством Густафсона. Их результаты как минимум на трех используемых приложениях показали значительную разницу между прогнозируемым и реальным приростом в 1024-процессорном гиперкубе. Выводы, которые сделал Густафсон звучат примерно так: - “Если повышать объем работы, то последовательные части будут все меньше влиять на выполнение, и можно будет считать, что ускорение пропорционально количеству доступных процессоров.”

В конце книги встретил описание методологии проектирования конкурентных систем, которую описал Ian Foster в своей книге “Design and Building Parallel Programs”. Эта методология рассматривалась на примере проектирования задачи умножения матрицы и распределенного подсчета слов. Тут уже примеры были более зубодробительные, но тем интереснее!

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

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


Автор(ы):

  • Kirill Bobrov

Год издания: 2025
Количество страниц: 272
Оценка: 5/5

Издатель: Питер
Ссылка на страницу книги на сайте издательства: https://www.piter.com/collection/seriya-grokaem/product/grokaem-konkurentnost

Оригинальное название: Grokking Concurrency
Год издания оригинала: 2023