Время по полочкам
Время — величина, на первый взгляд, универсальная. Но только до того момента, пока вы не захотите путешествовать или научить компьютеры определять даты. Давайте разберемся в сложных терминах, научимся определять тайм-зоны и поймем, почему же люди так боятся 2038 года (спойлер: все будет хо-рошо, но это не точно).
Эти странные три буквы
Время описывают не только секундами, минутами и часами. Однажды людям понадобились понятия, которые помогли бы ориентироваться и общаться, даже если одни из нас живут в Санкт-Петербурге, а другие — в Хабаровске. Иногда эти термины путают и пугают, но без них компьютеры бы не работали, а самолеты терялись бы в небе.
1. ТАI, или международное атомное время, — истинная шкала, в основе которой лежит атомная секунда. Представьте, что на физкультуре вы сдаете зачет по челночному бегу. Только в руках вместо палочки у вас электрон, а пробежать надо не два раза, а целых 9 192 637 770. Если вы атом цезия-133, то время, за которое вы преодолеете эту дистанцию, будет эталоном секунды. Дело в том, что электроны в атоме переходят с одного энергетического уровня на другой. В этот момент они излучают или поглощают свет. Периодичность этих световых колебаний фиксируют. Когда излучение «туда-обратно» произойдет вот столько раз, пройдет эталонная секунда. Нулевую атомную секунду отсчитали 1 января 1958 года в 00:00:00 по всемирному времени.
Источник: unsplash.com
2. UT1, или всемирное время, — шкала, основанная на вращении Земли вокруг своей оси относительно звезд. В ней секунда равна не значению в ТАI, а 1/86 400 части солнечных суток, т. е. за 86 400 секунд Земля совершает полный оборот, день сменяется ночью. Но физический мир несовершенен, Земля вращается неравномерно. Из-за этого длительность суток в такой шкале может немного меняться. Мы этого не ощущаем, но незначительные изменения улавливают компьютеры — и ломаются.
3. UTC, или всемирное координированное время, — универсальная шкала, которая основана на атомном времени и не зависит от вращения Земли. Сейчас ее используют, чтобы настраивать время и часовые пояса в разных регионах. UTC делит время на привычные нам дни, часы и минуты, которые отсчитываются от нулевого меридиана. Время записывается в привычной нам форме: 01.09.2024 12:00. День длится почти 86 400 секунд, но есть нюанс: иногда его корректируют високосными секундами.
4. Wall-clock time — вы добрались до самого простого термина. Это местное время, которое отображается на ваших часах или экране телефона. Используя его, мы договариваемся о встрече: «Давай увидимся сегодня в кофейне в 12:30?» Было бы странно указывать в сообщениях время встречи UTC +3 и заставлять собеседника мучительно считать.
5. Unix timestamp — время, которое показывает специальный счетчик. Он начал отсчет 1 января 1970 года в 00:00:00 по UTC. Каждый день значение счетчика увеличивается на 86 400 секунд. Время по этой шкале хранится в памяти компьютера как 32-битное целое число, т. е. как комбинация из 32 единичек и нулей. Потом из двоичной системы оно переводится в привычную нам десятичную. Например, 00:00:00 1 сентября 2024 года будет выглядеть как 1 725 148 800. Такой формат используют компьютерные программы.
Черные Часовые пояса
Однажды люди изобрели железные дороги и телеграфы. Это открыло новые пути для путешествий и торговли. Но возникла проблема: 6 утра в Лондоне и 6 утра в Москве наступают в разное время. Если рабочий в 06:00 по лондонскому времени только просыпается, то у московского специалиста смена может быть в самом разгаре — 8 утра как-никак.
В 1884 году делегаты из 25 стран собрались в Вашингтоне, чтобы избавиться от неудобства. На конференции приняли единый меридиан, от которого предложили отсчитывать время. Точкой отсчета стал нулевой Гринвичский меридиан, время в котором записывается как UTC +0. Чуть позже планету разделили на 24 часовые зоны. Их выражают, прибавляя или вычитая число из UTC. Например, Санкт-Петербург находится в тайм-зоне UTC +3, Владивосток — в UTC +10, а Нью-Йорк — в UTC -4.
Источник: unsplash.com
Обычно часовые пояса отличаются от нулевой точки на целое число, но бывают исключения. Например, часовой пояс в Индии — UTC +5:30 а в Афганистане — UTC +4:30. В Ирландии до 1916 года применялось странное дробное время UTC — 0:25:21.
Больше всего часовых поясов, как ни странно, у Франции — целых 12. Все дело в большом количестве зависимых территорий. В России сейчас действует 11 временных зон.
Интересно, что в 2011 году государство Самоа потеряло целый день из-за часовых поясов. Страна находилась в зоне UTC -11, но в декабре того года власти решили перейти в UTC +13. Самоа находится в Тихом океане, и такая замена понадобилась, чтобы людям было проще общаться с ближайшими странами — Австралией и Новой Зеландией. 29 декабря в 23:59 власти перевели время на 24 часа вперед и жители Самоа очутились сразу в 31 декабря.
Подкрутим гайки
Иногда хочется, чтобы дополнительный день в году был не 29 февраля, а 32 августа. А можно было обойтись без високосного года? Оказывается, нет.
Год — время, за которое планета совершает оборот вокруг Солнца. Для Земли он равен 365,2425 суткам, или 365 дням 5 часам, 48 минутам и 56 секундам. Мы привыкли к целым числам, поэтому год в наших календарях длится ровно 365 суток. Но куда девать числа после запятой? Если просто забыть о них, накопится ошибка. Например, через 400 лет календарь бы сдвинулся на 100 дней вперед, а Новый год пришлось бы праздновать в августе. Чтобы поддерживать баланс, раз в четыре года решили добавлять день. Как понять, високосный ли текущий год? Его номер без остатка должен делиться на четыре или четыреста, но не делиться на сто.
С годами разобрались, но, оказывается, сутки тоже не всегда равны 24 часам. Наша планета вращается неравномерно, из-за чего длина суток увеличивается. Появляется крошечная разница в атомном (ТАI) и всемирном (UT1) времени. Чтобы скомпенсировать это расхождение, ввели високосную секунду.
Международная служба вращения Земли прибавляет ее к 30 июня или 31 декабря, когда разница между ТАІ и UT1 приближается к одной секунде. В такой день время выглядит вот так: 23:59:60. Нестандартная ситуация иногда сбивает настройки компьютеров, но к серьезным сбоям пока не приводила. Недавно от високосных секунд решили отказаться, с 2035 года традиция закончится. Чтобы компенсировать разницу, раз в 50–100 лет служба будет добавлять високосную минуту. Надеемся, компьютеры это переживут.
Вперед в прошлое
Возможно, вы слышали про проблему 2000 года. В конце 1990-х люди начали массово переживать за компьютеры. Дело в том, что старые программы обозначали год, используя две цифры вместо четырех, — например, 1999 год записывался как 99. Это экономило место в памяти компьютера. Но 24 года назад могли начаться проблемы. Считалось, что в 2000-м компьютеры не смогут интерпретировать два нуля как новый век, и отмотают время на сто лет назад, в 1900-й.
Источник: unsplash.com
Из-за этого могли возникнуть сбои в транспорте, банковской системе и коммуникациях. Несмотря на возникающую панику, проблему устранили заранее: самоотверженные программисты переписали миллион строк кода, и глобальной катастрофы не случилось.
Но сложности не закончились — появилась проблема 2038 года. Компьютерные системы записывают время в шкале Unix timestamp. Значение в ней хранится, как мы помним, в формате 32-битного числа. Оказывается, у него есть лимит: максимальное значение составляет 2 147 483 647. Он наступит ровно 19 января 2038 года в 03:14:07 по UTC.
Специалисты считают: когда счетчик прибавит еще одну секунду, система переполнится. Из-за этого она начнет воспринимать время как отрицательное значение, закольцует его и перебросит нас в 1901 или в 1970 год. Такой кульбит может привести к сбоям программ или ошибкам в вычислениях.
Простого решения проблемы 2038 года не существует, но люди пробуют разные методы. Например, в некоторых системах используют 64-битное число.
Если перенести большинство программ в такой формат, то это сдвинет проблему аж на 292 миллиарда лет. Оставим разбираться с ней наших потомков.
Иллюстрация на обложке: Виктория Лихачева