Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет superhuman ([info]superhuman)
@ 2014-04-15 20:47:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Адреса непонятно, куда растут *, а вот деревья - всегда вниз. Но почему вниз? В реальности-то они вверх растут.

Недавно посетило озарение, почему. В контексте top-down и bottom-up подходов к программированию. (На самом-то деле, наверное, из-за того, что на бумаге пишут сверху вниз).

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

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

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


(Добавить комментарий)


[info]666
2014-04-16 11:47 (ссылка)
потому что чередуется режим работы (полнота и порядок поступления информации; ограничения по времени)

при начальном построении (или какой-нибудь полной дефрагментации), когда вся информация известна, а время не ограничено - скорее будет расти с листьев, и корнем вверх

а когда надо серии мелких апдейтов - проще представлять всю структуру статичной, а удаления-добавления болтаются снизу, т.е. растет вниз

(Ответить) (Ветвь дискуссии)


[info]phantom
2014-04-17 12:04 (ссылка)
Ну, это не объясняет, нет. Если у тебя заменить верх <--> низ, то тоже валидное обоснование будет, и более естественно.

Кстати, вот Кнут первые годы рисовал деревья снизу вверх, а потом передумал:
http://www.quora.com/Binary-Trees/Why-are-trees-in-computer-science-generally-drawn-upside-down-from-how-trees-are-in-real-life

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]666
2014-04-17 15:50 (ссылка)
может их надо вообще в 3d рисовать
root как бы в центре сферы,
а прочее от него во все стороны

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]phantom
2014-04-18 00:40 (ссылка)
Это без вопросов. Но я не нашёл достаточно хороших библиотек. Есть одна, но закрытая.

http://ubietylab.net/ubigraph/content/Demos/random_binary_tree.html

(Ответить) (Уровень выше)