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

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


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

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


вторник, 7 декабря 2010 г.

Несколько слов к 80-летию Евгения Андреевича Жоголева.

15.02.2010 исполнилось 80 лет со дня рождения Евгения Андреевича Жоголева.
Мне очень приятно вспоминать Евгения Андреевича, в период моей работы в НИВЦ МГУ - моего непосредственного начальника, а также научного руководителя моей дипломной работы и кандидатской диссертации, защищённых ещё на мехмате МГУ. Кстати, для Евгения Андреевича это была первая защита его аспиранта.
В моём представлении он остался очень чистым и очень талантливым, в некоторых вопросах очень наивным, но зато в других – глубоким мыслителем, в своём деле - настоящим пророком.
От него я впервые услышал несколько важных положений, существенно повлиявших на моё профессиональное мировосприятие. С удовольствием перечислю некоторые (по памяти; формулировки мои, суть – Евгения Андреевича).
  • Написанное в сто раз дороже сказанного.
  • Любое решение, касающееся сложной системы, можно подвергнуть вполне обоснованной критике.
  • Даже плохой стандарт лучше отсутствия стандарта.
Евгений Андреевич многое в программировании сделал впервые. Перечислю лишь оказавшееся наиболее перспективным.
Совместно с Николаем Петровичем Брусенцовым создал первую малую ЭВМ «Сетунь», к тому же единственную в мире троичную.
Совместно с Николаем Павловичем Трифоновым написал знаменитый первый отечественный учебник программирования.
Совместно с нами, своими сотрудниками, создал первую систему модульного программирования «СИМПР», предвосхитившую такие свойства самых современных систем (например, .Net), как модульное многоязычие, обеспечивающий такое многоязычие абстрактный семантический уровень (независимый от конкретного языка),  классификацию параметров модулей по времени их связывания (времени исполнения, загрузки, компиляции (generic), макрообработки).
Его программирование на синтаксических деревьях во многом предвосхитило современное увлечение XML (вполне, впрочем, оправданное).
Очень достойно для человека, работавшего фактически в изоляции от международного программистского сообщества.
Впрочем. именно Евгению Андреевичу мы должны быть признательны за появление в отечественном программировании Андрея Петровича Ершова, благодаря которому завязались интенсивные контакты с мировыми авторитетами в нашем деле.  Именно старшекурсник Жоголев увлёк программированием в то время также студента МГУ Андрея Петровича Ершова. Оба очень любили об этом рассказывать.
Повезло нам с учителями. Огромное им спасибо и вечная память.

пятница, 22 октября 2010 г.

Переиздание моей книги "Языки программирования. Концепции и принципы"

Вышло из печати переиздание моей книги "Языки программирования. Концепции и принципы". Сделано это, что называется, «по многочисленным просьбам трудящихся», московским издательством ДМК-пресс http://www.dmk-press.ru/ , в серии «Классика программирования» ( :) ), на основе отсканированного оригинала книги, подготовленной мною ровно 20 лет назад по материалам курса лекций, читанного мною в МГУ и изданного (без меня ( :) )), в 1993 году в Москве издательством "Радио и связь". 
Я искренне рад поблагодарить всех друзей и коллег, оказавших содействие переизданию. 
Моя особая признательность ДМК-пресс и Ольге Львовне Свиридовой-Бондаренко. Именно Ольга Львовна примерно год назад задумала и осуществила подготовку копии первого издания, и как раз к этому моменту счастливым образом подоспела инициатива издательства. 
В итоге книга скоро появится в продаже, а пока можно посмотреть её внешнюю и внутреннюю обложки (чтобы прочесть отзывы, нужно щёлкнуть на картинке ( :) ).



понедельник, 27 сентября 2010 г.

Ещё раз о правиле движения на круговой развязке

Сегодня понял, что предложенное в сообщении "Обычнология" от 12 сентября правило движения на круговой развязке по часовой стрелке обладает ещё одним приятным свойством.
Дело в том, что его вполне можно вводить хоть сегодня, причём совершенно безболезненно, в полном соответствии с основной идеей обычнологии.
Ведь водителей совершенно не нужно переучивать - они будут обязаны выполнять действие стандартных для них знаков, если уже имеющиеся круговые развязки снабжать стандартной стрелкой "одностороннее движение налево" вместо знака "круговая развязка".
При этом вполне могут сосуществовать круговые развязки, оформленные по-новому, и развязки, оформленные по-старому.
Хорошо бы, конечно, объявить водителям, что знакомые круговые развязки могут быть теперь оформлены по-другому (но уже известным стандартным образом!).

суббота, 18 сентября 2010 г.

Финская мудрость

На местном русском радио "Спутник" появилась рубрика "Финская мудрость" с якобы финскими пословицами-поговорками. Говорю "якобы", потому что обычно они мне не нравятся, а знакомые финны их финскими не признают.
Однако недавно услышал "финскую мудрость", которая очень пришлась по душе: "Дурак работает много, а умный - правильно" :)

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

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

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

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

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

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

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

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

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

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

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

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

четверг, 9 сентября 2010 г.

Сетикет

Многие сетевые форумы производят ужасное впечатление, как по форме, так и по содержанию.
Возможно, кому-то покажется интересным взглянуть на мой (и Патрика Гриспена :) )
старый текст о Нетикете (http://www.kolumbus.fi/vitali.kaufman/i-guide/netiquet.htm).

Приятно, что он до сих пор оказывается полезным (см. например, сообщение "Генерал-полковника" от 09.07.2009 :) )
http://marganets.in.ua/forum/29-27-4.
Жаль только. что я тогда не решился сразу назвать эти правила сетевого приличия хорошим русским словом "сетикет", а не калькой с английского.
Надеюсь, что ещё и сейчас не поздно поддержать в качестве термина именно "сетикет".

С другой стороны, не знаю ничего более эффективного с точки зрения культуры на форуме, чем требование выступать под своим настоящим именем, усиленное аккуратным отбором участников уважаемыми модераторами.