"Это была не ошибка, а проблема проектирования, - вспоминает Жерар Берри, заслуженный профессор Коллеж де Франс и автор книги "Информационная гипермощность" (издательство OdileJacob, 2017). - Компьютеры начали развиваться с приходом героической эры языка программирования КОБОЛ и информатики системы управления. В то время мы работали кустарно; никто не предполагал, что программы будут длиться десятилетия".
"Тогда для представления года в датах для экономии памяти использовали две цифры вместо четырех, которые мы обычно используем. При наступлении 1 января 2000 года после 99 должен был наступить 00 год, что возвращало нас на столетие назад к 1900 году, рискуя спровоцировать экономическую катастрофу... чего не произошло. "Чтобы решить эту проблему, потребовались огромные человеческие и финансовые вложения. Вроде все прошло без сучка и задоринки. Конечно, не обошлось без жертв, но они не хвастались этим!" Только в Соединенных Штатах на предотвращение и лечение этой "проблемы 2000 года" было потрачено 100 млрд долларов", - говорится в статье.
"Таким образом, 38 лет спустя может произойти подобное явление, но в гораздо меньшем масштабе. Снова встает вопрос о том, как операционные системы и программное обеспечение хранят время. Кодирование стало более изощренным, чем в прошлом веке, но все равно у него есть крайний срок. Время представлено количеством секунд, прошедших с исходной даты 1 января 1970 года в 00 часов 00 минут 00 секунд по Всемирному времени UTC (GMT)", - поясняет автор публикации.
"(...) Во избежание неточности чисел с запятой используются целые числа, размер которых обязательно ограничен. В основном, они были закодированы в 32-битном формате, что казалось более чем достаточно. (...) Сама поздняя дата, которая может быть представлена в таком формате, соответствует 2 147 483 647 секундам с 1 января 1970 года... то есть 19 января 2038 года в 03:14:07 по Всемирному времени (UTC)", - пишет LeTemps.
"Кроме того, после этого времени знак меняется на отрицательный, и время переводится на... 13 декабря 1901 года 20 часов 45 минут 52 секунды по Всемирному времени! К счастью, решение найдено, и на этот раз оно будет долговременным: достаточно закодировать дату в 64-битном формате, стандартном для компьютерных компонентов на данный момент. Срок устаревания часов сдвигается назад более чем на 292 млрд лет, что примерно в двадцать раз превышает возраст Вселенной!" - отмечает автор публикации.
"Этот дефект уже исправлен в самых популярных операционных системах, таких как Unix, Linux, Windows или MacOS. Однако в некоторых программах, таких как базы данных MySQL, дата хранится в 32-битном формате. Это также относится к более старым версиям операционных систем и ко многим бортовым компьютерам во всех типах систем, которые сложнее обновить", - указывает журналист.
"Время играет центральную роль во многих из этих бортовых систем", - настаивает Жерар Берри.
"Поэтому они не застрахованы от проблем, таких как система управления кнопками вызова в палатах многих швейцарских больниц, которая "зависла"во время перехода на 1 января 2019 года, отключив звонки. К счастью, неисправность была быстро устранена. Точно так же произошло с iPhone 4 в США зимой в 2010 году, когда случилась задержка звонка будильника на час. Что еще более досадно, 1 января того же года такая ошибка заблокировала более 20 млн карт для оплаты и снятия средств в Германии на несколько дней", - напоминает Дени Дельбек.
"Драматичными также могут оказаться последствия плохой погоды: "В Дахране в феврале 1991 года американская ракета Patriot не смогла перехватить иракскую ракету, в результате чего 28 солдат погибли и 98 были ранены, - рассказывает Жерар Берри. - Ошибка в управлении временем в Patriot означала, что приходилось перезагружать бортовой компьютер каждые четыре часа". К моменту пуска ракеты ее компьютер проработал сто часов, а часы отклонились на 34 сотых секунды, чего было достаточно, чтобы промахнуться мимо цели на 750 метров", - говорится в статье.
"(...) С современными микропроцессорами управление временем становится все более сложным, - подчеркивает Жерар Берри. - Двадцать или тридцать лет назад было легко предсказать, сколько времени потребуется для запуска программы. Сегодня, когда множество оптимизаций происходит автономно внутри самих интегральных схем, это придает скорости. Однако во многих системах такая возможность прогнозирования имеет решающее значение, например, в системах управления самолетами или ракетами. Проблемы со временем не закончились!"