Ви, мабуть, пам’ятаєте шум. Якщо ви були в мережі у 1999 році, вас завалювали попередженнями. Інтернет був переповнений риторикою кінця світу. Мейнстрімні ЗМІ ставилися до наступу нового тисячоліття як до бомби, що цокає, уповільненої дії. Усі говорили про проблему року 2000. Але якщо озирнутися на цей хаос зараз, то паніка здається майже абсурдною. У чому була реальна проблема? Це було магічним апокаліпсисом. Це була проста особливість того, як програмісти опрацьовували дати.

Як двозначний рік викликав помилки обчислень

Корінь проблеми лежав у лінощі або, можливо, в економії. Протягом десятиліть комп’ютерний код використовував лише дві цифри для позначення року. Ви можете побачити це скрізь у застарілих системах. Дата закінчення терміну дії файлу може виглядати як 08/31/99. Програмісти робили це, щоб заощадити місце для зберігання. Жорсткі диски раніше були крихітними та дорогими. Зберігання 99 займало менше місця, ніж 1999. Це також відповідало тому, як писали дати в чеках. Ніхто не очікував, що програмне забезпечення, написане в 1970 році, працюватиме через тридцять років.

Ця звичка створила конкретну прогалину в логіці. Коли годинник показував 00, програма не знала, чи це означає 1900 або 2000 рік. Більшість систем за промовчанням орієнтувалися на минуле. Вони припускали, що століття все ще 1900-ті. Це здається незначним, доки код не спробує виконати математичні операції.

Програмне забезпечення постійно обчислює різницю у часі. Йому потрібно знати ваш вік. Воно перевіряє, чи гарантія закінчилася. Воно планує платежі. Ці операції вимагають віднімання. Візьміть сьогоднішню дату та відніміть з неї дату вашого народження.

«Якщо програма вважає, що сьогоднішня дата – 1/1/00, а ваша дата народження – 1/1/65, то вона може вирахувати, що вам -65 років, а не 35 років».

Це негативне число ламає речі. Страхові поліси можуть продовжуватись неправильно. Банківські системи можуть нараховувати комісії за «негативний» час. Медичні записи можуть пов’язувати пацієнтів із неправильним віком. Програмне забезпечення не падає негайно, але воно виробляє сміття в даних. А у фінансах чи охороні здоров’я сміття в даних катастрофічне.

Чому виправлення помилки було таким дорогим

Рішення видається тривіальним. Ви просто оновлюєте код. Ви кажете програмі, що 00 означає 2000 рік, а не 1900-й. Або ви повністю переходите на чотиризначний формат. Чому б не зупинитись на чотирьох цифрах? Тому що ніхто не очікує, що це програмне забезпечення прослужить вісім тисяч років. Це розумне припущення.

Проблема була не у виправленні. Проблема була масштабною.

Застарілі системи величезні. У страхової компанії може бути 30 мільйонів рядків коду. Усередині цього хаосу може бути 200 тисяч окремих обчислень дати. Ви не можете просто натиснути “замінити все”. Ви повинні знайти кожний випадок. Ви повинні змінити код вручну. Потім ви маєте його протестувати. Тестування є вузьким місцем. Якщо одне виправлення займає один день на впровадження та перевірку, а у вас є 100 тисяч виправлень, математика швидко стає неприємною.

Допустимо, ви наймаєте 500 програмістів. Це коштує десятки мільйонів доларів. Вам потрібні їхні зарплати, пільги, офісні приміщення та накладні витрати на керування. Це логістичний жах. Компанії у паніці шукали розробників. Вони спалили бюджети. ЗМІ любили драму, але реальність була просто дорогою ІТ-роботою.

«Кінець світу» не був неминучим

Незважаючи на вартість та страх, сама подія пройшла тихо. Коли настало 1 січня 2000 року більшість систем витримали. Так, були збої. Деякі дисплеї показували неправильну дату. Деякі принтери вийшли з ладу. Але світова економіка не впала.

Ця стаття була архівована у розпал паніки. На той час переважною думкою було те, що катастрофа неминуча. Ми казали: “Насправді нічого не станеться”. Нас закидали камінням. Люди хотіли драми. Вони хотіли кризи.

Але проблема Y2K була переважно проблемою сприйняття. То був шанс виправити десятиліття технічного боргу. Це змусило компанії глянути на свій старий код. Це показало, наскільки тендітною насправді є наша цифрова інфраструктура. Тривога була реальною, але наслідки були керованими. У цьому полягає іронія помилки тисячоліття. Вона налякала світ, але переважно просто зробила ІТ-відділи дуже зайнятими протягом одного року.

Чому прогнози кінця світу до 2000 року виявилися помилковими

Календар перегорнув на 2000 рік. Програмне забезпечення, яке не було оновлено, дало збої. Виведення даних було б неправильним. Такою була технічна реальність. Проте культурною реальністю стала хвиля паніки. Люди уявляли собі кінець світу. Вони бачили відключення електрики, затори на шосе і літаки, що падають з неба. Суть передбачень була проста: суспільство впаде, тому що відмовлять комп’ютери, які забезпечують його роботу.

Хто продавав цей наратив? В основному групи ополченців, виживальники та релігійні фанатики. Їхня логіка спиралася на одне тендітне припущення: що люди безпорадні без кремнію.

Реальність 1 січня 2000 року виявилася набагато менш драматичною. Апокаліпсису не сталося. Мабуть, було кілька тижнів тертя. З’явилися непередбачені помилки. Було знайдено обхідні шляхи. Потім життя продовжилося. Цей результат був випадковістю. Він був структурним.

Людський шар за екраном

Більшість організацій знали, що їм потрібно виправити свій код або збанкрутувати. До кінця 1999 року більшість критичних систем було або оновлено, або прикрито тимчасовими рішеннями. Ринок карав за некомпетентність. Це не теорія змови. Це базовий капіталізм.

Але навіть якби програмне забезпечення дало збій, фізичний світ продовжував би обертатися. Ми переоцінюємо нашу залежність від комп’ютерів. Ми недооцінюємо стійкість ручної праці. Розглянемо ланцюжок постачання продуктів харчування. Помідори та салат не потребують мікропроцесорів для зростання. Фермери збирають їх. Консервні заводи їх переробляють. Водії вантажівок доставляють їх. Касові працівники пробивають їх у касі. Якби сканери в продуктовому магазині вийшли з ладу, касири вводили ціни вручну. Якби центральна база даних інвентарю дала збій, полиці все одно були заповнені товаром, навіть якщо відстеження його наявності стало б хаотичним.

Система не зупинилася. Вона просто сповільнилася. І люди адаптувалися.

Неприємності – це не крах

Ми постійно стикаємося з перебоями. Ми сприймаємо їх як норму. Візьміть страйк UPS у 1997 році. Вона зупинила приблизно 80% доставки посилок до США. Чи зупинилася торгівля? Ні. Люди перейшли на FedEx. Вони користувалися Поштою США. Світ продовжував обертатися.

Подивіться на 3 січня 1999 року. Чикаго та Детройт зіткнулися з найсильнішими снігопадами за три десятиліття. Авіасполучення було паралізоване. Автошоу у Детройті було відкладено. Тисячі людей опинилися у пастці. Чи зруйнувалося суспільство? Ні. Люди чекали. Люди переносили плани. Люди вижили.

Перехід через 2000 був схожий. У деяких компаній виникли проблеми. В інших – ні. Ті, хто зазнав невдачі, можливо, збанкрутували. Ті, хто адаптувався, залишились відкритими. Проблеми були реальними. Катастрофи не було.

Міф про енергосистему

Одним із найстійкіших методів нагнітання страху була енергосистема. Ідея полягала в тому, що поганий код спричинить спрацювання вимикачів і занурить націю в пітьму. Це ігнорує те, як насправді працює електроенергія.

Мережа складається з проводів, трансформаторів та перемикачів. Це – фізична інфраструктура. Електрони течуть по міді незалежно від того, чи стежить за ними комп’ютер чи ні. Так, системи управління контролюють напругу та навантаження. Якби ці системи вийшли з ладу, оператори втрутилися б у процес. Тисячі інженерів та техніків щодня керують цією мережею. Це ті ж люди, які відновлюють електрику після ураганів та крижаних штормів. Вони знають, як вручну балансувати навантаження, якщо це потрібно. Електрони не зупиняються. Світло залишається увімкненим, навіть якщо панель керування згасла.

Люди все ще хочуть купувати товари

Наратив кінця світу передбачає подвійний збій: комп’ютери ламаються і люди забувають, як функціонувати. Обидва твердження хибні.

1 січня 2000 року люди прокинулися. Вони сіли у свої машини. Вони хотіли купити продукти. Вони хотіли сплатити рахунки. Вони хотіли працювати. Люди, які продають ці товари, теж хотіли заробити гроші. Стимули не зникають через зміну календаря.

Якби банкомати перестали працювати, люди йшли б до банківських касирів. Касири – це люди. Вони вміють рахувати готівку. Якби штрих-код сканери вийшли з ладу, касири запроваджували б артикули товарів. Якби комп’ютери керування повітряним рухом зависли, диспетчери використовували б голосове радіо та паперові смужки. Пілоти можуть керувати літаками без автопілота. Ми, можливо, не садитимемо літаки щохвилини в завантаженому хабі, але літаки все одно літали.

Ми не безпорадні. Ми адаптивні. Рік 2000 прийшов і пішов. Сервери гули. Світло залишалося увімкненим. І ми повернулися до роботи.

Двозначна помилка з датами, яка мало не зруйнувала світ

Ми часто говоримо про помилку Y2K як про історичну деталь, про технологічну паніку, яка зійшла нанівець. Але механіка цієї проблеми була дуже простою. Y2K означає проблему року 2000. Це не був загадковий монстр у коді. Це був лінивий прийом, до якого вдалися програмісти десятиліття тому.

Більшість застарілих систем зберігали дати, використовуючи лише дві цифри на рік. 1987. 1995. 1999. Це заощаджувало пам’ять. У 1960-х та 1970-х роках пам’ять була дорогою. До 1990-х років вона стала дешевою, але код залишився тим самим. Коли годинник пробив опівночі 31 грудня 1999 року, ці двозначні поля переповнилися і набули значення «00».

Комп’ютери не побачили нового тисячоліття. Вони побачили 1900 рік.

То була не просто помилка календаря. То був колапс логіки. Системи, які розраховували відсотки, планували технічне обслуговування або керували енергомережами, раптово вирішили, що працюють на повст. Опрацювання даних зупинилося. Дати стали нісенітницею.

Чому Y2K представляв реальну загрозу для критичної інфраструктури

Люди жартують з Y2K, як з поганого фільму. Але потенційні наслідки були цілком відчутними. Йшлося не лише про те, що електронні таблиці виглядали дивно.

Критична інфраструктура спиралася на інтегровані системи. Промислові контролери. Банківські регістри. Медичні записи. Багато цих систем використовували старе обладнання, яке не можна було легко оновити. Якщо логіка дат давала збій, то відмовляла й сама функція.

Уявіть, що електростанція неправильно інтерпретує позначку часу. Або банк скасовує транзакції, бо вважає, що знову 1900 рік. Ризик був системним. Одна точка відмови могла викликати ланцюгову реакцію.

Уряди та корпорації витратили мільярди доларів на виправлення цієї проблеми. Вони провели аудит мільйонів рядків коду. Вони замінили обладнання. Вони переписали програмне забезпечення. Це була глобальна кампанія, бо ставки були високі.

Міф та реальність вірусу Y2K

А згодом був вірус. Сама помилка Y2K була збоєм, а не шкідливим програмним забезпеченням. Але хтось вирішив використати цю плутанину як зброю.

Вірус Y2K був розроблений для спрацьовування 1 січня 2000 року. Він не просто виводив із ладу ПК. Він знищував дані. Це був шкідливий код, створений для експлуатації зміни дати. Деякі версії були демонстраційними. Інші були деструктивними.

Пізні повідомлення підтвердили, що вірус Y2K викликав збої і спричинив мільярди доларів збитків по всьому світу. Він поширювався швидко. Він націлювався на вразливі системи, які були повністю оновлені.

Іронія в тому, що вірус покладався на ту ж помилку логіки дат, яку він нібито карав. Це було самовиконуване пророцтво хаосу.

Як Y2K назавжди змінив розробку програмного забезпечення

Виправлення Y2K було не просто латкою. Вона змінила те, як ми створюємо програмне забезпечення.

До Y2K обробка дат була другорядним завданням. Після цього вона стала основною вимогою. З’явилися стандарти. Чотиризначні роки стали обов’язковими. Протоколи тестування посилилися.

Ми перестали припускати, що старий код працюватиме. Ми почали його аудувати. Тривога змусила діяти прозоро. Вона змусила відповідати.

Сьогодні ми вважаємо чотиризначні дати чимось само собою зрозумілим. Ми забуваємо про паніку. Ми забуваємо про мільярди, витрачені на виправлення. Але ж урок залишається.

Код має наслідки. Невеликі хитрощі мають великі наслідки.