Показаны сообщения с ярлыком умолчание. Показать все сообщения
Показаны сообщения с ярлыком умолчание. Показать все сообщения

четверг, 27 декабря 2012 г.

Привычнология


Привычнология (habitology) - придуманная мной наука, о которой я впервые написал в этом блоге в сентябре 2010 года в сообщениях "Обычнология" и "Ещё раз о правиле движения на круговой развязке".
В добавление к приведенному там примеру упрощения правила поведения на круговой развязке, можно привести немало иных примеров, когда своевременная привычнологическая экспертиза помогла бы сохранить немалые ресурсы (в том числе деньги потребителей сервисов, сделанных сейчас привычнологически безответственно). Особенно важна такая экспертиза при проектировании умолчаний.
Скажем, всякому, кто имел сомнительное удовольствие подключать WCF веб-сервисы средствами Visual Studio 2010, настраивая многочисленные параметры подключения, понятно желание избежать этой головной боли. 
Привычнологическая безответственность идеологов такого подключения особенно бросается в глаза, когда клиента сервиса заставляют заботиться о параметрах внутренней «кухни» подключения (нпр. maxBufferPoolSize="524288" maxReceivedMessageSize="65536", и т.п.).
Чтобы оценить уровень естественности подобного проектирования, представьте себе, что Вы готовите к отправке обычную почтовую посылку, а от вас требуют, кроме адреса получателя, описать также уровень квалификации и привычки работников почты, да ещё и с учётом веса,  стоимости и содержимого вашей посылки.
Привычнологическая экспертиза должна была бы требовать, чтобы клиенту было достаточно указать лишь тот единственный параметр, без которого обслуживание действительно невозможно - адрес сервиса (URL).
Кстати, именно так сделано подключение  "старых" ASMX сервисов.
Все остальные настройки полезны клиенту только тогда, когда его потребности особые, выходят за рамки привычного. Например, он особо заинтересован в скорости, соблюдении особой секретности и т.п.

Привычнологию можно определить как науку, изучающую привычный порядок вещей, оценивающую ущерб от действий, изменяющих привычный порядок, изобретающую методы защиты от нежелательных изменений, в особенности носящих принудительный характер, а также предлагающую при настоятельной необходимости обоснованные варианты обновлённого порядка, предназначенного стать привычным, действующим без специальных указаний, т.е. по умолчанию.
Другими словами, эта наука о противодействии вздорным изменениям (изменениям, навязываемых без особой нужды, в сущности, из-за шила у кого-то в известном месте J) и, тем более, противодействия изменениям злонамеренным.
Таким образом, привычнологию можно считать естественным обобщением экологии (с живой природы на весь жизненный уклад).
 Цель привычнологии – способствовать максимальной осторожности при внесении изменений. 
Осторожность при внесении изменений в программу, особенно программу работающую – существенный аспект квалификации программиста. Хотелось бы, чтобы это лучше было понято не только собственно программистами.
С другой стороны, когда изменения обоснованы, а тем более необходимы (с чем постоянно работают программисты и любые управленцы вообще), привычнология призвана способствовать тому. чтобы изменения вносились максимально осторожно и ответственно, минимально усложняя жизнь в условиях обновлённого порядка без специальных указаний (другими словами, по умолчанию).
Иначе говоря, привычнология - наука о «правильных», «естественных» правилах «привычного» поведения системы, когда ей специально ничего не предписывают, её не настраивают. Вполне могу претендовать на авторство идеи этой науки, хотя Дейкстра может считаться, как минимум, её вдохновителем (см. Критерий Дейкстры в «ЯП»).
Замечание. Ранее в этом блоге я использовал слово «обычнология». Теперь я думаю, что термин «привычнология» точнее отражает замысел.  Привычное (сообществу людей) может показаться совсем не обычным (даже очень не обычным и очень интересным) совсем другим людям.


воскресенье, 12 сентября 2010 г.

"Обычнология"

Сегодня придумал новую науку ( :) ).
Я бы назвал её "обычнология" - наука о том, как оберегать людей от нарушения обычного порядка вещей.

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

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

Задумывался ли кто-либо из вас, почему в правилах дорожного движения (ПДД) необходимо специальное правило, определяющее поведение водителей на круговой развязке (на круге): "находящийся на круге имеет преимущество, выезжающий на круг обязан его пропустить"?
Очевидно, что любое лишнее правило в документе такого массового применения, как ПДД, крайне нежелательно. Это дополнительное обучение, дополнительные ошибки, дополнительные нервы, дополнительные человеческие жертвы, наконец.Тем не менее оно там появилось.

Я утверждаю, что указанное специальное правило (и, кстати, специальный знак, обозначающий кольцевую развязку(!) ) появилось только потому, что движение на круге предписано "против часовой стрелки".
Сделано это, как я понимаю, из-за "обычнологической" безграмотности авторов ПДД.

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

Существующие ПДД не смогли бы пройти квалифицированную "обычнологическую" экспертизу. Если всерьёз думать о простоте правил и, как огня, бояться нарушения уже существующего порядка без крайней нужды, то очевидно, что движение на круге должно быть "по часовой стрелке"!

Это, кстати, можно указать обычным знаком "одностороннее движения", направленным влево.
Ничего специального делать вообще не надо(!) – остальное регулирует обычный, давно принятый и, следовательно, ожидаемый водителями по умолчанию, стандарт – уступи дорогу тому, кто справа.

Конечно, когда плохие правила уже приняты, совершенно неясно, как ввести лучшие с минимальными потерями, и стоит ли это делать вообще. А вот "обычнологическая" экспертиза нововведений очень не повредила бы.

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