Найти в Дзене
Мир в Йоттабайтах

Конец света для компьютеров: Почему 19 января 2038 года миллионы устройств могут сойти с ума

Многие помнят панику вокруг «Проблемы 2000 года». Тогда мир боялся, что из-за двух цифр в дате самолеты упадут, а банки обнулят счета. Всё обошлось. Но в среде программистов знают: настоящий «цифровой апокалипсис» назначен на другую дату — 19 января 2038 года. В 03:14:07 по Гринвичу время на миллионах устройств внезапно открутится на 137 лет назад — в 1901 год. И это не ошибка календаря, а фундаментальное ограничение того, как компьютеры учатся считать. Компьютеры не понимают слов «вторник» или «декабрь». Для большинства операционных систем (особенно семейства Unix, на которых работают серверы, Android и даже умные кофеварки) время — это просто длинное число. Оно называется Unix Time. Отсчет начался в полночь 1 января 1970 года. С этого момента компьютер просто прибавляет по одной секунде. Большинство старых и «встроенных» систем используют для хранения времени 32-битное целое число. В двоичном коде (нули и единицы) самое большое число, которое можно впихнуть в 32 ячейки памяти, — это
Оглавление

Многие помнят панику вокруг «Проблемы 2000 года». Тогда мир боялся, что из-за двух цифр в дате самолеты упадут, а банки обнулят счета. Всё обошлось. Но в среде программистов знают: настоящий «цифровой апокалипсис» назначен на другую дату — 19 января 2038 года.

В 03:14:07 по Гринвичу время на миллионах устройств внезапно открутится на 137 лет назад — в 1901 год. И это не ошибка календаря, а фундаментальное ограничение того, как компьютеры учатся считать.

1. КАК КОМПЬЮТЕРЫ ВИДЯТ ВРЕМЯ?

Компьютеры не понимают слов «вторник» или «декабрь». Для большинства операционных систем (особенно семейства Unix, на которых работают серверы, Android и даже умные кофеварки) время — это просто длинное число.

Оно называется Unix Time. Отсчет начался в полночь 1 января 1970 года. С этого момента компьютер просто прибавляет по одной секунде.

  • Прошла секунда — в памяти число 1.
  • Прошел час — 3600.
  • Прошло 55 лет — и мы вплотную приблизились к пределу.

2. МАГИЯ ЧИСЛА 2 147 483 647

Большинство старых и «встроенных» систем используют для хранения времени 32-битное целое число.

В двоичном коде (нули и единицы) самое большое число, которое можно впихнуть в 32 ячейки памяти, — это 2 147 483 647.

Именно столько секунд пройдет с 1970 года до 19 января 2038 года.

[Image: A binary overflow diagram. When you add 1 to a row of thirty-one 1s, it flips to a leading 1 followed by 0s, which in computer logic interpreted as a negative number.]

Что произойдет в 03:14:08?

Произойдет «целочисленное переполнение». Как в старом игровом автомате, когда счет зашкаливает и сбрасывается, компьютер увидит вместо следующей секунды огромное отрицательное число. Логика системы решит, что на дворе не 2038-й, а 13 декабря 1901 года.

3. ЧТО МОЖЕТ СЛОМАТЬСЯ?

На первый взгляд — ерунда. Но современный мир держится на точных датах:

  • Банковские транзакции: Система не сможет провести платеж, потому что по её мнению срок действия вашей карты истек 130 лет назад.
  • Транспорт: Навигационные системы, авиадиспетчерские службы и системы управления поездами могут заблокироваться из-за ошибки в расчетах интервалов времени.
  • Критическая инфраструктура: Системы безопасности АЭС, ГЭС и других объектов часто работают на очень старом, «вечном» железе, которое никто не обновлял десятилетиями.

4. ПОЧЕМУ МЫ ПРОСТО НЕ МОЖЕМ ЭТО ИСПРАВИТЬ?

Для современных компьютеров и смартфонов проблемы нет. Windows 11, современные macOS и последние версии Android работают на 64-битных системах.

64-битное число настолько огромно, что запаса времени в нем хватит на 292 миллиарда лет. Это в 20 раз больше возраста нашей Вселенной.

Главная опасность — «невидимые» компьютеры:

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

ИТОГ: СТОИТ ЛИ ПАНИКОВАТЬ?

У инженеров есть еще 12 лет. Сейчас идет массовая ревизия старого кода. Скорее всего, к 2038 году большинство критических узлов заменят. Но локальные сбои неизбежны: какой-нибудь старый сервер в маленьком банке или контроллер светофора в провинциальном городке обязательно «сойдет с ума».

Этот баг — напоминание о том, что даже в цифровом мире всё имеет свой срок годности. Мы строим системы на века, но иногда забываем, что их «память» может закончиться в самый неподходящий момент.