Конца света не было, зато были шальные деньги, рост ИТ и появился «индийский аутсорс»: история «ошибки 2000»
Благодаря панике одни стали прислушиваться к программистам, а другие заработали на страшилках.
В конце девяностых годов мировое общество боялось наступления 1 января 2000 года. Эксперты и ИТ-специалисты полагали, что из-за бага электроника может автоматически перевести дату на 1900 год, что вызовет сбои во множестве систем.
Предрекали всё: от краха банков и отключения электросетей до падения самолётов и пусков ракет — и это на фоне наступления «миллениума», который сам по себе вызывал страх у параноиков.
Проблема стала глобальной — на её решение потратили несколько сотен миллиардов долларов, политики создавали международные центры решения, а компании экстренно формировали группы инженеров «ошибки 2000».
Что такое «ошибка 2000» и откуда она взялась
Ещё в 50-60 годах программисты использовали только последние два знака для обозначения года в датах, например, 14.08.57 вместо 14.08.1957. Это позволяло сэкономить и так небольшую память компьютеров, которые читали код с перфокарт.
Программы должны были быть компактными и эффективными, и на тот момент было достаточно, что цифра 57 обозначает 1957 год — другие века компьютеры не понимали.
Со временем мощность вычислительных систем росла, появились жесткие диски и дискеты для хранения данных, но большие объёмы памяти оставались слишком дорогими: в 1980 году 1 ГБ стоил более $6 млн, в 1990 году — около $100 тысяч.
Поэтому в ход шла оптимизация: код в вычислительных системах не переписывали — ведь до 2000 года было ещё далеко, объём баз данных продолжал расти, а новые приложения должны были быть совместимы со старыми.
Таким образом ограничение в два символа на запись года сохранялось десятилетиями и распространилось практически на всё, что имело внутри микропроцессор, включая самолёты, заводы, спутники и электростанции.
Появление «глашатая 2000 года»
В 1978 году программист IBM Питер де Ягер задумался: «А что случится 1 января 2000 года? (01.01.00) Компьютеры определят дату как 1900 год или не распознают её вообще и начнут неверно обрабатывать данные?».
Любой основанный на дате расчет окажется некорректным — например, финансовые документы, решил он.
Ещё одна попутная проблема с переходом даты — 2000 год был високосным (делится на 400), а 1900 — нет, поэтому в случае перевода часов на 1900 год «потеряется» 29 февраля: после 28 февраля в системе наступит 1 марта.
Ягер поделился беспокойством с боссом, но в ответ получил лишь насмешку.
Ты беспокоишься о проблеме, которая не наступит ещё 22 года? Расслабься, к тому времени кто-нибудь это уже исправит.
В канун Нового года 1990-го Ягер сам столкнулся с ошибкой. Он проверил, что будет, если перевести время на 31 декабря 1999 года — и в итоге из строя вышла система IBM PROFS. Она использовала для обозначения года один символ и сбросила дату.
Из любопытства я установил на компьютере дату на 31 декабря 1999 года незадолго до полуночи, выключил его, подождал несколько минут, включил и взглянул на время. На часах был 1984 год — и тут я занервничал. Питер де Ягер
В 1993 году Ягер написал статью о проблеме 2000 года в Computerworld, крупнейшем ИТ-журнале того времени. Редакция озаглавила статью «Судный день 2000» — поначалу программиста высмеивали, но по мере приближения середины девяностых проблема привлекла всеобщее внимание.
New York Times назвала Ягера «городским глашатаем 2000 года» — рассказы про «ошибку 2000» и поиск путей её исправления стали его основной задачей и заработком.
Что делали компании и корпорации
Во второй половине девяностых годов проблемой стали вплотную заниматься на корпоративном и межгосударственном уровне.
Например, бывший президент США Билл Клинтон в 1998 году создал совет по борьбе с ошибкой, её опасность обсуждали на саммите «Большой восьмёрки» в том же году. В 1999 году ООН открыл международный кооперативный центр решения проблемы, а США и Россия — «центр стратегической стабильности», чтобы предотвратить случайные ракетные атаки друг на друга.
Компании же создавали отдельные группы инженеров и аналитиков, проводили стресс-тесты, обновляли и меняли оборудование и ПО, тратя на это десятки и сотни миллионов долларов.
Большая часть из них решила модернизироваться и обезопаситься собственными силами, а не нанимать аутсорсеров или «программистов-пенсионеров», знакомых с устаревшим софтом, пишет CNET.
Банки и финансовые организации на случай сбоя подготовили наличность — например, Федеральная резервная система США напечатала бумажных денег на $70 млрд, на случай, если жители страны решат снять свои вклады.
Аналитическая фирма Gartner оценивала глобальные расходы на подготовку к 2000 году в $300 млрд, а Питер де Ягер — в $600 млрд.
В США потратили на профилактику и исправление около $100 млрд, из которых $9 млрд — правительство, а остальное — банки, авиакомпании, телекоммуникационные компании и другие корпоративные структуры.