:: urbansheep (urbansheep) wrote,
:: urbansheep
urbansheep

  • Music:

[ L ] The Law of Leaky Abstractions и Designing complex, adaptive systems // Спольски и Морвилл

Джоэл написал очередную (долгожданную, надо сказать) статью, на этот раз о том, как работает упрощение и абстракция в программных системах. Он выводит очень правильный закон: „В какой-то момент любая абстракция «протекает»“. Под „протеканием“ имеется в виду, что в реальной жизни абстрактные объекты всегда рано или поздно подходят к „порогу абстрактности“, после чего возникают совершенно реальные проблемы. То есть, создав абстрактную систему, невозможно гарантировать, что она будет совершенна всегда — найдётся обязательно ситуация, которая „не обслуживается“ абстрактным объектом, и возникает насущная необходимость латать дыры — отсюда метафора „протекания“.

«

All non-trivial abstractions, to some degree, are leaky.

»

Мне это интересно в вечном для меня контексте „универсализации, абстракции и оптимизации“, куда приплелась ещё и статья Питера Морвилла о том, что ИА, на самом деле — это сочетание методов тщательного планирования (top-down) с методами оптимизации и совершенствования (bottom-up), а вовсе не что-то одно. То, о чём мы с moedusa говорили в феврале, Питер Морвилл, наконец, написал в New Architect Magazine. Так вот, среди прочего, Питер говорит буквально следующее: „Нас окончательно заразил и лишил собственной воли вирус упрощения. Этот изворотливый советчик убедил нас в том, что мы можем легче понять веб-сайт, как набор нескольких простых объектов, связанных между собой, и что разработка такого проекта может быть, благодаря упрощению и разделению на объекты, разбита на множество простых и быстрых маленьких шажков.“

Иными словами, для современных разработчиков веб-сайт — набор абстракций, которые они для себя, по пришедшей к ним от братьев-по-разуму-программистов привычке, называют „модулями“. Модуль конференций, модуль новостей, модуль каталога. И, в общем, их можно понять — набор абстракций окинуть взглядом проще, чем многомерную сеть отношений всех блоков и подблоков веб-сайта в целом.

И тут уже тезисы Морвилла переплетаются со словами Джоэла Спольски: в какой-то момент абстракция может „прохудиться“ и не выполнить свою работу, и тогда уже ты должен быть готов к тому, что тебе самому придётся взять в руки гаечный ключ, просмотреть (по сути - произвести подробный аудит) абстракции, и либо „обновить“ её, либо отказаться совсем. Таким образом, одним из выводов становится то, что при решении сложных ситуаций признаком профессионала является не искусство оперировать блоками и кусками, а чёткое знание того, что именно стоит за той или иной абстрактной фигурой, и где искать проблему.


Ссылки по теме:

Live Journal User Rating
Subscribe
  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 10 comments