livelight: (Default)
livelight ([personal profile] livelight) wrote2009-10-23 12:30 pm

Программистское дао

Изгибовыгибистые алгоритмы обычно программируются примерно так:
1. Сесть подумать.
2. Начать писать код.
3. Обнаружить, что получается неприлично сложно, длинно и заковыристо (а потому - глюкаво).
4. Ещё раз сесть и подумать.
5. Загрузить задачу в подсознание и заняться чем-нибудь другим (можно даже жежешку почитать).
6. Неожиданно фкурить, каким образом это всё делается гораздо проще.
7. Всё переделать.

Собственно в момент (6) приходит понимание, как задача устроена на самом деле, и какие в ней есть внутренние связи, до сих пор не замеченные. Пока связи непонятны - видишь кучу деревьев, над каждым из которых надо думать отдельно (и в каждом из которых можно ошибиться); как только связи понятны - думать надо только над одним лесом, который гораздо проще.

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


Upd: Старое на схожую тему

[identity profile] adolfus.livejournal.com 2009-10-23 10:58 am (UTC)(link)
Прямо в точку! %))

[identity profile] otomian-malu.livejournal.com 2009-10-24 08:03 pm (UTC)(link)
>можно даже жежешку почитать
я так и думала, что ты придумаешь способ вписать жежешечку в рабочий процесс! :D

(Anonymous) 2009-12-07 02:41 am (UTC)(link)
Увидел дерево. Постигнув дерево, увидел связи. Постигнув связи, увидел лес. Постигнув лес. . .