Адреса непонятно, куда растут
*, а вот деревья - всегда вниз. Но почему вниз? В реальности-то они вверх растут.
Недавно посетило озарение, почему. В контексте top-down и bottom-up подходов к программированию. (На самом-то деле, наверное, из-за того, что на бумаге пишут сверху вниз).
Если представить программу как дерево, при сверху-вниз подходе сначала набрасываются верхние рутины, а дальше идём в
глубину, т.е. вниз, и детализируем. Определяем внутренние узлы и листья.
Но это если у нас есть обзор всего дерева/программы. А если через время это дерево послужит кирпичиком для нового дерева? Тут надо переключиться на второй подход. Вообще, мы постоянно переключаемся с одного к другому в долгосрочном периоде.
В снизу-вверх подходе можно это дерево рассматривать как
пирамиду (или даже карточный домик, но здесь коннотации не те). Закладываем блоки в основание, потом на следующий уровень, на следущий, и т.д. до вершины. Потом если хочем возвести всё строение ещё выше, то для этого нужно расширить периметр, и поднимаясь слой за слоем, достраивать каждый уровень. Или несколько пирамид вместе составить, и следующую уже сверху громоздить.