Архитектура приложений с открытым исходным кодом
Архитектура приложений с открытым исходным кодом
SO-SO
После прочтения первой главы книги “Архитектура приложений с открытым исходным кодом” я засомневался: а нужна ли она мне? Вернулся к введению, чтобы понять целевую аудиторию. Книга предназначена для программистов, интересующихся архитектурой.
У многих архитектурный опыт ограничивается их собственными проектами. Для того чтобы принимать грамотные решения, нужно знать как можно больше примеров реальных систем. Казалось бы, это то, что мне нужно. Поэтому я решил дать книге ещё шанс и прочитал около пяти глав, включая разделы про CMake и Eclipse.
Все-таки мои впечатления остались негативными. Книга оказалась совсем не тем, что я ожидал. Большинство глав говорят о архитектуре слишком общими словами, без погружения в код, чего мне не хватало. Из плюсов — здесь действительно разобраны популярные проекты: LLVM, Grafana, CMake, HDFS и другие.
Самыми интересными оказались главы про NoSQL и “Непрерывную интеграцию”. Первая посвящена принципам работы нереляционных баз данных, вторая — подходам к CI/CD. Это скорее обзорные материалы, но они дали мне общие представления по темам.
Ещё одна глава, заслуживающая внимания, — Sendmail. История его развития оказалась увлекательной.
Я прочел только первый том — на второй уже не хватило сил и желания. В общем, книгу рекомендую разве что для ознакомления с отдельными интересующими проектами. Если вы хотите действительно разобраться в коде, лучше поискать что то другое.
Что почитать вместо этого
Если вы, как и я, хотите погружаться в исходный код, могу посоветовать две другие, прочитанные мной, книги.
Первая — “CPython Internals: Your Guide to the Python 3 Interpreter” Anthony Shaw, которая посвящена внутреннему устройству CPython. В книге подробно разбираются этапы компиляции и структуры данных Python, а также параллелизм. Самое полезное, что я вынес, — это возможность изучить реальный компилятор, шаг за шагом следуя за объяснениями автора. Все примеры основаны на кодовой базе CPython и её модификации, так что можно “потрогать” компилятор на практике.
Вторая книга — “Ядро Linux. Описание процесса разработки” от Роберта Лава. В ней описан код ядра Linux, но только версии 2.6. Новых фич тут не найти, зато классика хорошо разобрана. Я рекомендую прочитать её хотя бы один раз обзорно, а затем возвращаться к конкретным главам по мере необходимости.
Эти книги, может, не самые лёгкие для чтения, но они гораздо полезнее, чем поверхностный обзор архитектуры проектов, без погружения в их кодовую базу. Мне хочется более удобных форматов для изучения кода, но даже такой подход лучше, чем просто читать исходный код.