Какие удачные примеры погружения в кодовую базу вы встречали?
Публичный постДля развития как специалиста полезно изучать чужие подходы к проектированию и программированию реальных систем. Да и это просто интересно.
Какие ресурсы или материалы ты знаешь, которые удачно описывают кодовую базу какого-либо проекта? Особенно интересуют подходы, где есть глубокий разбор с примерами кода и объяснениями.
Вот что я встречал:
Удачные примеры
- Плейлист Source Dive про устройство ОС на примере xv6-riscv] — отличная серия видео, где подробно разбирается код операционной системы.
- Статья "История одного блокчейна" на хабре — разбор блокчейна, с акцентом на архитектурные решения и реализацию.
- CPython Internals: Your Guide to the Python 3 Interpreter Anthony Shaw — отличная книга для изучения компилятора CPython с практическими примерами. За детальное описание сборки CPython и изменение исходников по ходу чтения - отдельный плюс. Чисто моя придирка - ожидания мои не оправдала, потому что все знания у меня уже были.
- Экстремальный Cи. Параллелизм, ООП и продвинутые возможности Амини Камран — книга не про конкретный проект, а про C. Очень уж хорошо написана, читать приятно. Мне понравился детальный разбор, как исходный код превращается в исполняемый файл, тщательно объяснен процесс сборки и линковки.
Сомнительно, но окей
Ядро Linux. Описание процесса разработки Роберт Лав — книга описывает устройство ядра Linux, но старой версии 2.6. Написано сухо, читать сложно и не так приятно, как хотелось бы.
Неудачный пример
Архитектура приложений с открытым исходным кодом. — большинство глав говорят о архитектуре слишком общими словами, без погружения в код, чего мне не хватало. Из плюсов: анализ популярных проектов, таких как LLVM, Grafana, CMake, HDFS.
Особенно интересны главы:
- "NoSQL"
- "Непрерывная интеграция"
- Sendmail — увлекательная история развития.
А какие примеры можете порекомендовать вы? Интересует всё: статьи, книги, видео, или даже личные советы по изучению кода больших проектов.
Есть известный в узких кругах (ну, может, и неизвестный, а информационный пузырь у меня специфичный) Fabien Sanglard. Пишет он бложик про компьютерную графику, игровые движки и ретро-гейминг. Прославился серией постов с разбором движка id Tech 3. Это тот на котором написан Quake 3, Hexen, много чего еще из 90-х и ноги которого до сих пор торчат из современного CoD.
Fabien написал еще две книги про движок Wolfenstein 3D (старый) и движок Doom (тоже старый). Если читать обе книжки, то можно заметить, что английский автору не родной, и порой не совсем понятно, что он имеет в виду. К счастью, язык программирования C lingua franca понятный нам обоим. Видел, что он выпустил апдейты к обоим книгам с исправленными ошибками и опечатками и, возможно, переписал текст на более складный, но вторые версии не открывал, гарантий не даю. Когда-то написал обзор длинее пары абзацев на том про Doom. Привкус обзор оставляет солёный, но писал я молодым и заносчивым. Не дайте молодому душниле отговорить вас от удовольствия прочитать книгу.
Была еще книжка от Andrew "bunnie" Huang про реверс-инжениринг первого Xbox. Когда консоль только вышла, появилась такая идея, что это очень дешёвая general-purpose машина, эххх вот бы только придумать как на него Linux накатить (сорри, за спойлер). Паяю я погано, поэтому какие-то архитектурные решения и приёмы на запомнил, зато мне очень понравилась глава про copyright и патентную систему в США.
Немного вбок от книг про архитектуру: есть контент-крейторы, которые занимаются recreational programming. Как ёмко описал это один человек "building square wheels to better appreciate the round ones". Знаю трех человек:
https://kddnewton.com/2023/11/30/advent-of-prism-part-0 цикл статей как писали новый парсер для Ruby (с версии 3.4 которая выходит на днях он будет дефолтным). Сам парсер на C, в целом интересно почитать как устроены вручную (не сгерерированные по грамматике) recoverable (не просто "я упал", а нашел место откуда продолжить и продолжил) парсеры