Какие удачные примеры погружения в кодовую базу вы встречали?

 Публичный пост

Для развития как специалиста полезно изучать чужие подходы к проектированию и программированию реальных систем. Да и это просто интересно.

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

Вот что я встречал:

Удачные примеры

  • Плейлист 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.

Особенно интересны главы:

А какие примеры можете порекомендовать вы? Интересует всё: статьи, книги, видео, или даже личные советы по изучению кода больших проектов.

7 комментариев 👇

Есть известный в узких кругах (ну, может, и неизвестный, а информационный пузырь у меня специфичный) Fabien Sanglard. Пишет он бложик про компьютерную графику, игровые движки и ретро-гейминг. Прославился серией постов с разбором движка id Tech 3. Это тот на котором написан Quake 3, Hexen, много чего еще из 90-х и ноги которого до сих пор торчат из современного CoD.

Картинка для привлечения внимания, дерево можно посмотреть на вики в статье  про"id Tech"
Картинка для привлечения внимания, дерево можно посмотреть на вики в статье про"id Tech"

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". Знаю трех человек:

  • sphaerophoria – системщина на Rust/Zig
  • jonhoo – программирование на Rust, решал Distributive challenges, писал с нуля торрент-треккер
  • TsodingDaily – ну просто титан в мире стриминга программирование, пишет сумасшедшие вещи, недавно видел стрим, где программирует на LLVM IR
  Развернуть 1 комментарий

@snpefk, поддерживаю, прочёл как раз его книжку про Wolf 3D и дочитываю про Doom - не оторваться. Степень въедливости автора впечатляет по-хорошему (попытка реконструировать офис, в котором работали разработчики, и их среды разработки - класс)!
Правда в книжке про Doom будто меньше примеров именно кода.

Очень надеюсь, что он продолжит и напишет подобное про Quake. После всех ограничений Doom прямо интересно, как же их преодолевали в следующем движке.

  Развернуть 1 комментарий

@snpefk, спасибо, подборка выглядит вдохновляюще. Особенно, когды ты из тех 90%, кто шел в универ на программиста делать игры=)
Мне эти блоги были не известны, ты прав про специфичный пузырь.
Я вот перфом занимаюсь, так под linux все знают Брендана Грегга. Довольно известный парень Денис Бахвалов с курсом perf-ninja и книгой. Те кто занимаются win, сразу вспомнят Марка Руссиновича.
У каждого свой пузырь и найти такие gem-блоги в сети - это просто чудо.

  Развернуть 1 комментарий

https://kddnewton.com/2023/11/30/advent-of-prism-part-0 цикл статей как писали новый парсер для Ruby (с версии 3.4 которая выходит на днях он будет дефолтным). Сам парсер на C, в целом интересно почитать как устроены вручную (не сгерерированные по грамматике) recoverable (не просто "я упал", а нашел место откуда продолжить и продолжил) парсеры

  Развернуть 1 комментарий

@dtsepelev, спасибо!

  Развернуть 1 комментарий

@dtsepelev, довольно часто встречается тема с разбором парсеров/компиляторов/лексеров/разбором грамматик. В посте упоминаю CPython, Константин Владимиров ведет сейчас курс.
Интересно, почему именно эта тема освещается так тщательно? А может это я натыкаюсь так...

  Развернуть 1 комментарий

@XCemaXX, есть какое–то когнитивное искажение, когда ты начинаешь на что–то обращать внимание, он кажется что появляется чаще (на самом деле вероятно раньше просто не обращал внимания :) ) про компиляторы еще https://craftinginterpreters.com топ

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб