Уже не в первый раз наблюдаю такое явление:
Имеется некая технология, назовем ее X. Многие люди, в том числе весьма неглупые, считают ее слишком запутанной и сложной. Они собираются и придумывают более простой, стройный и чистый вариант того же самого, X'. Убеждают окружающих в правильности своей идеи. Постепенно X' начинает достаточно широко применяться, образуется пользовательская культура, возникают приложения, книжки, сайты и прочее. Постепенно же X' обрастает новыми функциональными слоями (A1, A2, ...), поскольку в чистом виде ее возможности меньше, чем требуется сообществу. В результате оказывается, что X' + A1 + A2 + ... — технология куда более сложная, чем та X, от сложности которой разработчики хотели нас избавить.
Самый вопиющий пример — это, конечно, SGML vs. XML: я уже запутался во всех тех стандартах, что выдает на-гора W3C. Видимо, подобная же участь ожидает в ближайшем будущем «программирование в аспектах», которое сейчас продвигают Кичалес и Ко в качестве удобной замены некоторым сторонам мета-объектных протоколов. (Кичалеса, собственно, есть все основания считать потерянным для просвещенного человечества с тех пор, как он связался с явщиками, — ну да Бог ему судья.)
Для чего в базовом дизайне правильно™ устроенной системы необходим некоторый уровень нетривиальности? Можно ли, например, сказать, что у всякой системы есть «совокупная сложность», и чем проще база, тем больше сложности остается на долю всего остального? Другое объяснение (весьма соблазнительное): что нетривиальная базовая технология задает порог, через который в сообщество не могут пробраться идиоты.
|