Technics & Technology
RIN.ru - Russian Information Network
 
ОТГОЛОСКИ ?ПРОБЛЕМЫ 2000?, ИХ ПРИЧИНЫ И МЕТОДЫ РЕШЕНИЯ.

Начало прошлого года было отмечено особой вехой в истории компьютерного программного обеспечения. Знаменитая Проблема ?2000?, которая навалилась тогда на плечи программистов во всем мире, была связана с датами. Эта черта уже считается пройденной, но ее отголоски еще могут дать о себе знать в виде других проблем, которые могут быть связаны с ошибками расчета календаря и при переходах от одного к другому.

Эдвард М. Реинголд, председатель Отделения Информатики в Институте Технологий Штата Иллинойс, Чикаго, и Начум Дершовиц, профессор информатики Университета Тель-Авива, недавно выпустили свое второе издание ?Календарные вычисления? (?Calendrical Calculations?, Cambridge University Press, 2001).

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

Согласно "Нью-Йорк Таймс" от 12 января 1999 года, Microsoft Windows 95, 98 и NT вышли с ошибками для оценки времени дня и предстоящих дат в 2001 году. В частности, при расчете на дату 1 апреля, Windows показывал на 8 апреля. Ориентировочно это воздействовало на 40 - 50 миллионов компьютеров, включая некоторые из тех, что были в гостиницах и использовались в качестве будильника клиентов по их запросам. Другой известный случай состоял в том, что программисты, нанятые службами Такси Нью-Йорка и Заказа Лимузинов составили программу начальной даты для ввода нового тарифа неправильно, потому что они не учли, что это был високосный год. В результате, компании потеряли 28 дней прибыли от не повышенных тарифов.

Книга ?Календарные вычисления? описывает 25 календарей и алгоритмы связи между ними. В частности это: Григорианский (используемый в обиходе календарь), календарь ISO (Международной Организации по Стандартизации), Древнеегипетский (который почти идентичен Армянскому), Юлианский (календарь, который широко использовался до ввода Григорианского), Коптский, Эфиопский, Исламский, современный Персидский (астрономические и арифметические формы), Baha'i, Древнееврейский, Мейан, Balinese Pawukon, календарь Французской Революции, Китайский (почти идентичный Японскому), Древний Индуистский (солнечный и лунно-солнечный) и современный Индусский (солнечный и лунно-солнечный).

Книга вышла с CD-ROMом, в котором приведены все алгоритмы и вычисления авторов, изобретенные ими для помощи в программировании дат. На соответствующем сайте - http://www.calendarists.com/ даются даты на все 25 календарей книги.

Одна из наиболее важных в историческом аспекте сопоставления дат ? связь Григорианского и юлианского календарей.

Григорианский календарь был введен Римским Папой Грегори XIII приблизительно 400 лет назад, чтобы заменить Юлианский календарь, но эта инициатива не была широко воспринята всеми странами еще почти 200 лет.

Юлианский календарь имел массу дефектов, потому что он имел более быструю скорость по сравнению с истинным астрономическим годом. Зимнее солнцестояние, отмечаемое как самый короткий день года, обычно падает на 22 декабря. Поскольку Юлианский календарь постоянно ускорялся, самый короткий день года прибывал на несколько минут раньше каждый год. После сотен лет использования Юлианского календаря, зимнее солнцестояние отодвинулось более чем на неделю к моменту ввода Григорианского.

С 16-ого столетия, Римский папа Грегори XIII решил, что проблему нужно решать. Чтобы замедлить календарь, он установил своим декретом, что только годы, делимые на число 400 без остатка будут рассматриваться високосными годами, а все остальные не високосными. Поэтому, 1900 не был високосным годом, а 2000 был. Чтобы вернуть зимнее солнцестояние к тому моменту, которое должно быть 22 декабря, вместо приходившегося тогда на 11 число, он принял решение вычеркнуть 11 дней календаря и сразу перескочить вперед. В году 1582 году 4 октября было отмечено как 15 октября и началась эра Григорианского календаря.

Новый Григорианский календарь вызвал крупные финансовые, религиозные и другие проблемы во всем мире. Католические страны послушно последовали за декретом Римского Папы, но Протестантские страны отклонили эту инициативу и продолжали вести Юлианский календарь.

В Великобритании Юлианский календарь сохранился в течение еще 200 лет. Россия не принимала Григорианский календарь вплоть до 1920 года.

Книга ?Календарные вычисления? содержит алгоритмы, которые могут учитывать разность между Юлианскими и Григорианскими календарями, что особенно важно для программ, которые обрабатывают историческую информацию.

Информация для контакта: Шэрон Пармет; parmet@iit.edu; 312-567-7997; Институт Технологий Штата Иллинойс

Компьютеры и оргтехника