Сказка о потерянном времени, или как программисты предотвратят цифровой коллапс

Сегодня, в 256-й день года, Россия отмечает День программиста. МИСС Университет поздравляет всех участников! Проработанные и оптимизированные супергерои способны на все, даже на решение глобальной проблемы «Цифрового Апокалипсиса», связанной с компьютерными системами хронометража. Узнайте, как программисты спасут мир, в нашем материале.

В сфере информационных технологий существует концепция «Эры Unix» — системы времени, начавшейся в 00:00:00 UTC 1 января 1970 года. Такое решение было принято потому, что в 1960-е годы компьютерная память и носители информации были очень дорогими. Программисты должны сохранять все, включая хранение данных о времени. Количество секунд, прошедших с тех пор, легло в основу многих операционных систем, таких как Unix и ее производные. Это упрощает расчеты и позволяет легко рассчитывать временные интервалы. Но позже это вызвало проблемы.

Unix-время соответствует 1 000 000 000 секунд

Первым признаком возможного провала стало явление, известное как «Проблема 2000 года» или Y2K. В середине прошлого века многие программы использовали для сохранения дат две последние цифры года. Это вполне разумное решение, когда не хватает памяти. Однако ясно, что к 2000 году программа не сможет отличить 1900 от 2000 года. Все это может вызвать критические сбои систем, включая банковскую, авиационную и медицинскую системы.

Прогнозы возможных последствий 2000 года звучат катастрофически: от остановки электростанций до отказов авиации. Правительства по всему миру начали подготовку, сформировав специальные комитеты для решения потенциальных проблем. Оказывается, большинство этих опасений были преувеличены. Программисты, особенно специалисты COBOL (Common Business Oriented Language — один из старейших языков программирования), быстро адаптировали старые программы, добавляя поля дат для включения столетий. В результате «цифрового апокалипсиса» удалось избежать. Эта ситуация показывает, насколько важно своевременно реагировать на подобные вызовы.

Комикс о том, к чему могла привести проблема 2000 года. Да-да, мир вдруг вернется на 100 лет назад.

Обратите внимание: По словам Стивена Хокинга, внеземные цивилизации и путешествия во времени более вероятны, чем существование Бога.

Это действительно неприятное путешествие во времени.

Y2K+10: новое тысячелетие, новые проблемы

В 2010 году возникла аналогичная проблема – «Y2K+10». Возникла путаница между двоично-десятичным (BCD) и шестнадцатеричным кодированием чисел. Оба кодируют числа от 0 до 9 как 0x0–0x9. Но число 10 другое: 0x10 в BCD, 0x0A в шестнадцатеричной кодировке, 0x10 представляет число 16. Некоторые системы неправильно определяют 2010 год и отображают его как 2016 год. В результате в некоторых текстовых сообщениях указаны неверные даты: вместо 2010 года указано время 2016 года. Самый серьезный провал коснулся немецких банков, где 20 миллионов карт имели чипы, которые уже нельзя было прочитать. Решить проблему с картой можно двумя способами: перенастроить терминалы и банкоматы по всей стране или выпустить новые карты с правильными чипами. Последнее требует много ресурсов, поэтому мы решили обновить ПО на десятках тысяч терминалов и банкоматов. Это заняло несколько недель, но результаты появились легче и быстрее.

Самые большие угрозы, связанные со временем, еще впереди. Проблема 2038 затрагивает 32-битные процессоры, которые могут хранить ограниченное значение времени — 2147483647 секунд с начала «эры Unix». Этот предел будет достигнут 19 января 2038 года в 03:14:07 (UTC), после чего системы, использующие 32-битные счетчики времени, вернутся в исходное состояние и начнут отображать отрицательные значения. Это может вызвать проблемы с банкоматами, медицинским оборудованием, навигационными системами и другим критически важным оборудованием.

который сейчас час? -2147483648 секунд

Однако, в отличие от Y2K, у этой проблемы уже есть решение. Переход на 64-битные системы позволяет хранить большие значения времени — до 9223372036854775807 секунд. Это эквивалентно более чем 292 миллиардам лет.

Решение всех проблем в 2038 году и раньше — это шаг в развитии индустрии информационных технологий, а также таких базовых проблем, как хранение времени. В будущем мир наверняка столкнется с новыми проблемами, связанными с сохранением времени в более сложных системах (квантовых вычислениях или глобально распределенных системах). Но сейчас можно сказать, что в любой момент развития IT-технологий программисты обязательно найдут решение.

Автор: Даниил Ефимов, директор Конкурсно-олимпийского центра технологий НИТУ «МИСиС», руководитель хакатон-клуба, основатель IT-платформы «МИСиС». Для связи используйте Telegram: t.me/Daniil_Y, t.me/road_note.

Студенческое ИТ-сообщество МИСиС ИТ объединяет более 2000 человек в хакатонах разработки, клубах дизайна, разработки игр, машинного обучения и робототехники. Мы растем и рады предложениям о сотрудничестве.
Всем хороших праздников!

Технологии Наука Наука Программист Инновации Наука ПРОУчёныеМИСИСTelegram (ссылка) Длинный пост 1

Больше интересных статей здесь: Новости науки и техники.

Источник статьи: Сказка о потерянном времени, или как программисты предотвратят цифровой коллапс.