ИнтернетПочему цифровой конец света не наступит
Но лишняя секунда может нам навредить
Текст
Гриша Пророков
30 июня этого года к атомным часам, по которым высчитывает время весь мир, добавится ещё одна секунда. В прошлый раз это вызвало большие проблемы в интернете: в 2012-м из-за дополнительной секунды обрушилось множество сайтов. Компьютерные программы и системы до сих пор неуклюже обращаются с датами и временем — и это периодически вызывает серьёзные ошибки. Look At Me разбирается, почему так происходит и ждёт ли нас глобальная компьютерная катастрофа.
Почему у компьютеров возникают проблемы со временем и датами?
Все 50 с лишним лет существования компьютеров, разные программы и системы обращались с датами и временем по-своему. Программы записывают их, используя разный объём памяти. Чаще всего с проблемами из-за смены даты и времени сталкиваются старые системы, у которых происходит арифметическое переполнение. Представьте себе одометр автомобиля, который проехал 999999 километров: когда к нему прибавляется ещё один километр, он сбрасывается на 000000. Примерно то же самое происходит в некоторых случаях с программами — хотя это не единственная причина возникновения ошибок.
Чаще всего программисты оставляли всё как есть, чтобы сэкономить память, а иногда даже пользовались «заплатками»: скажем, дата 9/9/99 некоторое время использовалась как контрольное значение, чтобы указать, что дальше этого дня ничего нет. Когда наступило 9 сентября 1999 года, это вызвало несколько ошибок. Но именно арифметическим переполнением была вызвана проблема-2000.
Что такое проблема-2000?
Если вы родились после 2000-го, не исключено, что вы с ней не сталкивались: это самая известная глобальная компьютерная ошибка, вызванная сменой даты. Она была связана с несколькими факторами: во-первых, в некоторых программах года обозначались двумя цифрами (то есть, скажем, 1985 год выглядел, как 85), так что 2000-й сбросился на 00. Во-вторых, некоторые программисты решили, что 2000-й не будет високосным годом (это связано с правилом, что года, делимые на 100, — не високосные; но есть исключение: если они делимы на 400 — то всё-таки високосные) и сделали неправильные вычисления.
Главное в проблеме-2000 — никто не был до конца уверен, что именно произойдёт; и о ней много говорили в медиа. Весь 1999 год о ней писали СМИ, сообщали телеканалы. Под конец года даже началась лёгкая паника: некоторые считали, что, как только наступит 1 января 2000 года, вся техника «сойдёт с ума», банкоматы начнут выплёвывать деньги, самолёты упадут с неба, а ракеты с атомными бомбами сами по себе полетят в разные точки мира.
Что-то действительно произошло в начале 2000 года?
Да. Вот здесь можно посмотреть список известных ошибок, которые возникли по всему миру. Скажем, на нескольких ядерных реакторах в США столкнулись с небольшими глитчами (ни один из них, впрочем, не угрожал безопасности людей). Банк Чикаго не смог перевести $ 700 000 налогов. Некоторые спутники США выдавали ошибки несколько дней. Трудность заключается в том, что многие компании не пожелали сообщать об ошибках, вызванных проблемой-2000, поэтому составить объективную картину того, что именно случилось в те дни, невозможно.
Что бы произошло, если бы
на проблему-2000 никто вовремя
не обратил внимания?
Конец света точно не наступил бы: то есть, например, ракеты с ядерными боеголовками не полетели бы по всему миру. Всё-таки система безопасности в случае критической ошибки просто всё блокирует. Но последствия могли быть серьёзными. Больше всего переживали банки: вместо того, чтобы сделать на вклады начисления за 1 месяц, они могли прибавить сумму за 99 лет. Также существовала опасность, что в первые минуты 2000 года дадут сбой навигационные системы в самолётах. Паника возникла в первую очередь из-за неизвестности: никто не знал, что именно программисты сделали с датами в каждом случае. Поэтому всем пришлось перепроверять огромное количество кода. Несколько лет перед 2000 годом все готовились, исправляя и обновляя компьютерные системы. Этому даже отчасти посвящена комедия «Офисное пространство»: герои занимаются тем, что вручную исправляют ошибки в финансовой системе своей компании. Да, это не самое весёлое занятие.
Но это был уникальный случай, так ведь? Такое больше
не повторится?
Скорее всего, повторится. В последнее время все говорят о 2038 годе как следующем 2000-м. Ошибку обнаружили необычным образом: клип «Gangnam Style» набрал на YouTube 2,147,483,647 просмотров — и после этого счётчик сбился. Это связано с тем, что серверы YouTube работали на 32-битной системе, для которой 2,147,483,647 — максимальное отображаемое число. Точнее, всё обстоит чуть сложнее: 32-битные системы понимают 4,294,967,295 чисел, но в определённых случаях учитывают ещё и отрицательные числа, так что разброс становится от -2,147,483,648 до 2,147,483,647 и число просмотров «Gangnam Style» — это положительный максимум.
Как это связано с 2038 годом? Компьютеры, работающие на 32-битных системах, высчитывают время секундами от 1 января 1970 года. 2,147,483,647 секунд после этой даты — это 19 января 2038 года. Что именно произойдёт в этот момент и какие системы дадут сбой, — неизвестно. Как и в случае с проблемой-2000, главное опасение заключается в том, что ошибку выдадут очень много систем одновременно — и тогда может произойти что-то серьёзное. Но это маловероятно: человечество уже давно переходит на 64-битные системы, у которых со временем всё проще, они могут высчитать дату, в несколько раз превышающую возраст Вселенной. Так что компьютеров с 32-битными ОС к 2038 году почти не останется. С другой стороны, проблемы могут начаться и раньше: скажем, календарь, высчитывающий что-либо на 20 лет вперёд, «заглючит» уже в 2018-м.
Все ли подобные проблемы связаны с конкретными датами?
Есть чуть более хитрые проблемы. Например, те, которые вызваны секундной координацией — дополнительной секундой, которая появляется раз в несколько лет. Дело в том, что из-за неравномерного вращения Земли реальное среднее солнечное время (то, которое вычисляется по Солнцу) периодически расходится с международным атомным временем (это то, которое вычисляется атомными часами), и атомные часы приходится корректировать на 1 секунду. Когда это произошло в 2012 году, несколько крупных интернет-компаний и их сайты столкнулись с проблемами: обрушились Reddit, сайты Gawker Media, 4chan, Linkedin, Yelp и другие. Как выяснилось, проблема была вызвана серверами Linux, а также языком Java. Многие системы используют NTP, протокол для синхронизации внутренних часов компьютера с международными атомными часами. Лишняя секунда сбила их с толку. В июне 2015-го это случится снова, и, как обычно, нельзя точно предсказать, что именно произойдёт. Но конец света, конечно, не наступит.
фотографии via Shutterstock, Reverbere Studio
Комментарии
Подписаться