Главная страница Visual 2000 · Общий список статей

Когда же наступит новое тысячелетие?
Окончание. См. Начало.

Андрей Колесов

© 1999, Андрей Колесов
Авторский вариант. Статья была опубликована c незначительной литературной правкой в газете "Модус" № 10/99, с. 8.

В отношении недели существует большая определенность
В поисках нового календаря
Переход на новый стандарт — это очень сложно
Когда родился Пушкин?
Похоже, в алгоритме Microsoft есть ошибка
Так когда же наступит 21-й век — третье тысячелетие?


В отношении недели существует большая определенность

Говоря о календарях, конечно же, следует упомянуть и о недельных циклах, которые задают ритм труда человека, чередование рабочих и выходных дней. Для этого в истории человечества использовались разные интервалы — 5, 7 и 10 дней. Но все же общепризнанной стала семерка. Ее магический смысл можно обсуждать отдельно, но все же именно этот временной цикл лучше соответствует череде состояния "работа-отдых". При этом довольно очевидна также связь с периодичностью смены фаз Луны.

Там или иначе, но семидневная неделя была известна еще на Древнем Востоке. А современное ее распространение было положено во времена расцвета Римской Империи в I веке н.э. Тогда каждый день недели получил собственное название по именам богов-планет — Сатурна, Солнца, Луны, Венеры и пр., что мы сегодня можем легко обнаружить в западно-европейских языках (в частности, в английском).

В русском языке (точнее, в славянских языках) названия дней недели связаны с их последовательностью. Напомним, что в древности выходной день назывался не воскресенье, а "неделя" (день, когда ничего "не делают, не работают"). Соответственно, следующий день был понедельник (после недели), вторник, среда (середина недели) и т.д. Единственное исключение здесь — суббота, в названии которой многие исследователи видят еврейское происхождение (sabbath — время отдыха).

Наиболее интересным моментом является то, что при различиях календарей цикл дней недели у разных народов одинаков. В частности, день 17 марта 1999 года по григорианскому календарю соответствует 30 марта по юлианскому, но в обоих случаях — это среда. Правда, сам выходной день в разных странах (в зависимости от религиозных традиций) может не совпадать, например, в Израиле он приходится на субботу, а в мусульманских странах — на пятницу.

В начало статьи

В поисках нового календаря

Григорианский календарь имеет ряд заметных недостатков, например, неравенство месяцев, кварталов, полугодий. К тому же там нет соответствия чисел месяцев дням недели (решение этой задачи — основа выпуска огромного числа календарей-изданий).

Поэтому идея создания некоторой новой системы исчисления дней в году стала обсуждаться еще в 19-м веке, и сейчас ей занимается Совет ООН по Экономическим и Социальным вопросам. Понятное дело, что основной проблемой здесь является не сама выработка нового календаря, а создание технологии перехода мирового сообщества со старой системы на новую.

Предложений по универсальным календарям имеется огромное количество. Одно из них представляет собой любопытный проект, сформулированный более ста лет назад. В нем предлагается календарный год считать равным 364 суткам: 4 квартала по 91 дню и по 13 полных семидневных недель. В этом случае каждый день любого месяца приходится на один и тот же день недели. Кроме того, для согласования длины календарного года с тропическим в конце каждого года необходимо прибавлять один день (вне недели и вне месяца) — "День мира". А в високосный год (по правилу григорианского календаря) после 30 июня еще один вненедельный день —"День високосного года".

В начало статьи

Переход на новый стандарт — это очень сложно

Однако реальные перспективы для введения нового календаря представляются очень ничтожными. Сейчас уже всем известно о проблеме 2000 года — шуму много, денег тратится тоже немало. А сколько же усилий потребуется для полного перевода только компьютерных систем на новые принципы отсчета дат?!

В этой связи следует подчеркнуть, что именно в стандартах времени человечество проявило удивительную солидарность, которая не наблюдается, например, в единицах длины и веса. Например, в США и Англии издавна и до сих пор используются мили, дюймы, фунты и пр. Для Англии это создает серьезные проблемы при интеграции в европейское сообщество, но задача введения метрической системы там переносится на довольно отдаленное будущее. А переход с левостороннего на правостороннее движение уже давно снят с повестки дня дискуссий (в последний раз такие планы обсуждались в 60-х годах).

Впрочем, далеко ходить не надо. В России имеется единственная в стране железнодорожная линия с левосторонним движением — Казанская дорога. Дискуссия о переводе ее на обычную для страны схему работы еще в старые добрые докризисные времена неизменно упиралась в проблему: "работники дороги и окрестные жители привыкли". Но там-то хоть речь идет о серьезных капитальных затратах. А вспомним о безуспешной попытке двадцатилетней давности перейти в СССР на измерение атмосферного давления в "паскалях" (единица измерения давления системы СИ) вместо миллиметров ртутного столба. Тогда в течение почти года в прогнозах погоды приводилось значение атмосферного давления в двух единицах. Тем не менее даже в условиях централизованного социалистического управления страной "гектопаскали" наткнулись на приверженность народных масс близкому их сердцу (но большинству совершенно неведомому) ртутному столбу.

Так что ссылка православной церкви (еще в 16-17 веках) на то, что переход с юлианского на григорианский календарь может вызвать непонимание народа и смуту, выглядит не такой уж безосновательной.

В начало статьи

Когда родился Пушкин?

Однако вернемся к календарям. Проблема заключается в том, что, как уже отмечалось, фактический переход с юлианского календаря на григорианский проходил в разных странах не одновременно — с 16 по 20 столетия.

Все это послужило появлению огромного числа исторических мифов, связанных с тем, что одновременно к одним событиям применялись разные системы отсчета. В результате могло легко получиться так, что граф Калиостро в один и тот же день мог одновременно пребывать и в Петербурге, и в Берлине, а парусники с фантастической скоростью переплывали Атлантику и пр.

Рудименты разных систем отсчета времени мы видим и сегодня в нашей стране, где официальным календарем является григорианский, а календарем ведущей религии (явно претендующей на государственный статус) — юлианский. В результате, если так и будет продолжаться, то через какие-нибудь 102 года нам придется корректировать законы о государственных праздниках — православное Рождество в 2101 году будет приходится уже на 8 января по новому стилю.

Как известно, в этом году будет широко отмечаться 200-летний юбилей Пушкина. Но какого числа должны проходить главные празднества? В Большой Советской Энциклопедии сказано, что великий русский поэт родился 26 мая (6 июня по новому стилю) 1799 года. Поэтому вполне логично, если юбилей состоится 6 июня. Однако, если мы будем руководствоваться православными принципами, то 200-летную годовщину нужно отмечать 8 июня 1999 года (25 мая по старому стилю).

В начало статьи

Похоже, в алгоритме Microsoft есть ошибка

Сейчас самое время вспомнить о компьютерной проблеме 2000 года. До сведения широкой общественности уже доведена информация о том, что одна из ошибок "Проблемы Y2K" в неких приложениях связана с неверным определением 2000 года как високосного. (Правда, как это повелось в дискуссиях на данную тему, не было приведено никаких конкретных примеров.) Оказалось, что широкие массы как пользователей, так и разработчиков ПО даже не знали, что с детства известный алгоритм определения високосного года — деление на четыре без остатка — не совсем точен. Но потом программисты облегченно вздохнули, узнав, что он вполне подходит еще для ближайших ста лет: 2000 год действительно является високосным как исключение из ряда вековых лет (номера которых оканчиваются на два нуля).

Так или иначе, но корпорация Microsoft в своем критерии соответствия ПО проблеме Y2K (www.microsoft.com/technet/year2k/criteria.htm) включила отдельный пункт: "Правильное определение високосного года". Но дело в том, что данная постановка вопроса явно недостаточна. Речь-то идет о проблеме правильного ведения календаря, в котором вопрос високосного года является частным. Ведь если кто-то решил убрать 29 февраля из календаря 2000 года (интересно — исходя из каких соображений?), то другой может с таким же успехом определить число дней в августе равным 30 (так было до 8 года до н.э.).

Рассматривая же вопрос именно с такой точки зрения, возникают очень серьезные сомнения в правильности алгоритма работы с датами, заложенного в средства разработки Microsoft. Те, кто имеют дело с бизнес-задачами, могут не волноваться — там, вроде бы, все в порядке. Но тем, кто работает с историческими датами, следует прочитать эту статью до конца.

Средства разработки Microsoft (в частности, широко распространенный Visual Basic), с помощью которых создаются пользовательские приложения, обеспечивают поддержку специального формата данных для даты, которая может изменяться в диапазоне от 01.01.100 до 31.12.9999. Для работы с датами имеется большой набор функций, хотя в принципе задача сводится к одной — определению даты и дня недели следующих и предыдущих суток по сравнению с текущими.

За нулевую точку отсчета принята дата 30 декабря 1899 году, от которой вверх и вниз идет отсчет времени по правилам григорианского календаря. Но это является неверным — это правило действует только до 15 октября 1582 (когда григорианский календарь был введен в действие). Вспомним, что писалось в первой части статьи, и попробуем ответить на вопрос: какой был день накануне пятницы 15 октября 1582 года? Правильно, четверг 4 октября — в григорианском календаре просто нет дат с 6 по 14 октября 1582 года, и вся информация об исторических событиях в предыдущий период приводится в старом стиле. С сегодняшней точки зрения разница в несколько дней, казалось бы, является пустяком, но для историка вопрос, предположим, привязки даты к дню недели может уже быть принципиально важным (Куликовская битва — 08.09.1380 — произошла до или после выходного дня?). Не говоря уже о том, что в истории человечества был, например, день 29 февраля 1500 года, который с точки зрения Microsoft является недопустимой датой.

Вывод из сказанного таков. При работе с историческими датами после 4 октября 1582 года просто необходима возможность работы с датами в новом и старом стиле. Но использование алгоритма григорианского календаря в обратную сторону от даты его введения, скорее всего, является ошибкой. Простой пример — как мы показали выше, даты юбилеев событий могут расходиться, но само событие четко привязано к конкретной дате. А если мы будем использовать алгоритм Microsoft, то получим, что даты Рождества Христова (25 декабря), т.е. собственно момент рождения, совпадают в юлианском и григорианском календарях только в 3-м веке нашей эры, а не в первом, как это, вроде бы, должно быть.

В реальной жизни проблема правильного ведения календаря до 1582 года, вряд ли, затронет кого-либо всерьез. Однако вспомним — знаменитая эпопея с заменой Pentium пять лет назад начиналась также с ошибки, вероятность которой исчислялась миллионным долями. И была она обнаружена при довольно экзотических астрономических расчетах.

В начало статьи

Так когда же наступит 21-й век — третье тысячелетие?

Ответ на этот вопрос требует уточнения — что мы имеем в виду? С формальной точки зрения в современном календаре нет нулевого года — перед первый годом нашей эры был первый год до нашей эры, т.е. нумерация лет такова: ..., -2, -1, 1, 2,.... Соответственно, столетний цикл заканчивается в xx00 год, а значит 21-й век наступит 1 января 2001 года. Христианский мир будет праздновать двухтысячелетие Рождества Христова 23 декабря 2000 года. Только католики и протестанты будут привязывать эту дату к григорианскому календарю, а православные — к юлианскому (что будет соответствовать 7 января 2001 года по новому стилю).

Однако с точки зрения задач управления самого широкого класса — компьютерная проблема Y2K невольно подчеркнула это — было бы логичным вести отчет лет не с единицы, а с нуля (согласитесь, в нумерации лет, приведенной выше, отсутствие нуля выглядит некоторой аномалией). Поэтому было бы логичнее считать нулевой век нашей эры (обратите внимание, что счет веком ведется именно с нуля) неполным, а началом века считать xx00 год.

Короче говоря, учитывая советский менталитет нашего общества, которое почитает любые поводы для празднеств (религиозные, светские, революционные, технические и пр.), нас ожидает затяжная встреча нового тысячелетия с 01.01.2000 по 13.01.2001.

В начало статьи