Новая дата конца света с точностью до секунды...

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

Кто только не пытался определиться и предсказать дату второго пришествия. С большим напряжением мы пережили встречу 2000 года, ожидая, что вот теперь-то точно разверзнутся хляби небесные. Ан нет, пронесло... У-фффф... Да так расслабились, что почти незаметно прошла ошибка 29 февраля 2000 года, о которой стало известно большинству только когда она, собственно, появилась.

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

Как, может быть, не всем еще известно, время в языке программирования С, на котором написана известная операционная система UNIX (значение ее невозможно сегодня переоценить, ведь Интернет, в первую очередь, - сеть компьютеров, работающих под управлением UNIX) и все ее модификации, задается типом данных time_t, который является не чем иным, как знаковым длинным целым типом (long int), о чем можно удостовериться, заглянув в /usr/include/bits/types.h и найти определение типа __time_t, из которого потом в time.h и рождается тип time_t. Что же представляют из себя переменные типа time_t, определяющие текущее время? А это не что иное, как количество секунд, прошедшее с 0 часов 0 минут 1 января 1970 года. Не знаю уж, что произошло в тот год, что от него начал отсчет календарь нашей компьютерной эры, но количество этих секунд, как нам бы этого и не хотелось, неизменно увеличивается. Уже сегодня их количество перевалило за 980 миллионов! Вы, наверное, уже догадались, к чему я клоню? Именно. Максимальное значение, которое может представить вышеозначенный тип данных времени, равняется 2,147,483,648 (256 x 256 x 256 x 256 / 2). Несложные расчеты показывают, что переполнение разрядной сетки произойдет на восьмой секунде 14-й минуты 4-го часа 19-го дня января 2038 года. Что произойдет в этот момент - одному, наверное, изобретателю UNIX известно, но, по всей видимости, ничего хорошего не произойдет.

Тут явно присутствует и тайна магических чисел, как, например, событие сие произойдет спустя 18 дней и 3 часа после начала 2038 года - числа, которые издревле внушали страх всем христианам (3 раза прибавить друг к другу 6 получится 18, вспомним 666 - число зверя). Но эту проблему, как и тот факт, что ошибка 2038 выпадает на день крещения Христова по календарю православной конфессии, оставим на рассмотрение и толкование нумерологам от теологии.

Наша же задача, как говорится, знать нашего клопа (а враг программиста - клоп) в лицо, и желательно заранее.

А может, в моих выкладках не все так страшно? Может, и не доживем мы до этой ошибки, вследствие какой-нибудь более ранней и более грозной?

Специально для "Компьютерных Вестей",
Дмитрий БОРЕЙЧУК,
программист,
dbor@imail.ru

Версия для печатиВерсия для печати

Номер: 

05 за 2001 год

Рубрика: 

Размышлизмы
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!