Как разбираться в огромных исходниках?

Скажите как понять, какая часть за что отвечает в больших проектах, состаящих из сотен файлов, как например ядро линукс. Лично я путаюсь в этом океане кода, и не могу представить как ведется поддержка таких гигантов. Как дописывать новый функционал и искать ошибки?
  • Вопрос задан
  • 1523 просмотра
Решения вопроса 2
@TheAthlete
Perl 5, C, C++, компьютерные сети
В программировании есть такое понятие как модульность - большие системы делятся на модули, каждые из которых отвечают за свою часть работы - ядро linux, графическая подсистема, драйвера. Если взять ядро линукс, то там есть много модулей - драйвера на оборудование - видеокаты, звуковые карты и т.д. на самом нижнем уровне, подсистема для мултиплексирования ввода-вывода (select/poll/epoll) и т.д. Каждый разработчик занимается своей задачей, своим модулем в ядре Linux. Например, если ты пишешь на Node.js можно начать интерисоваться, что же внутри. И найти цепочку, которая ведет в ядро Linux (упрощенно): Node.js -> libuv -> epoll и далее разбираться, как этот системный вызов работает на уровне ядра и начать изучать исходный код ядра Linux для этого системного вызова.
Ответ написан
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
Самым твоим большим ограничением, внезапно, будет твоя собственная оперативная память, которая, в моменте, согласно исследований британских ученых, способна удерживать 7+-2 объекта (от 5 до 9 в среднем). Если у тебя объектов для рассмотрения тысячи, десятки тысяч или сотен тысяч и больше - желаю успехов. :)

Вторым твоим ограничением будет неспособность долго и пристально фокусироваться на процессе сканирования чужого кода. Внимание будет постоянно пытаться убежать куда-то, на что-то менее пугающее, что-то более понятное и привычное, приятное. Это называется прокрастинация, Макс Дорофеев фпомасч.

Более того, по мере сканирования кода будет возникать масса моментов, где непонятно что сделано, как сделано, зачем сделано, какие у этого последствия, соответственно все это надо расследовать отдельно и как-то запоминать, документировать, структурировать и пр. Что будет еще больше переключать из контекста в контекст и нужно уметь их фиксировать и как-то возвращаться, восстанавливать картину. Это весьма утомительно, а ресурс мозга таки ограничен.

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

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

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

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

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

Основные прорывы происходят именно в этом ресурсном состоянии. Искать надо его, если сумеешь найти и удержать - считай что ты счастливый человек.
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
php666
@php666
PHP-макака
Никак.
Если речь про коммерческие проекты, где сменилось 10 поколений разрабов, то всё делается методом тыка, с осторожностью. Если проект не подразумевает модульности или ООП, то это жопа.

Копаться в таких кучах кода - самая омерзительная часть профессии. Опыта никакого, практической пользы никакой. Программист выступает в роли эдакого дворника, копаясь в говнеце.
Ответ написан
anton_reut
@anton_reut
Начинающий веб-разработчик
- Как съесть слона?
- По кусочкам. И с кетчупом.
Ответ написан
BojackHorseman
@BojackHorseman
...в творческом отпуске...
постепенно... и с дебаггером
Ответ написан
profesor08
@profesor08
Как разбираться в огромных исходниках?

Окинуть широким взглядом сурсы и посмотреть на их структуру, по ней можно будет сделать некоторые выводы. Потом по мере поступления задач сначала пытаться найти решение в сурсах, если нет, то писать самому. Естественно оформлять все по образу и подобию, как реализованы другие вещи.
Ответ написан
erniesto77
@erniesto77
oop, rb, py, php, js
надо разобрать логику проекта с разработчиком этого проекта. Иначе будет сложно, легче с нуля поднять тему, чем ковыряться.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Профилирование и составление всей архитектурной схемы проекта (или его части).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы