Проблема 2000
Пирсон совершил поистине выдающийся подвиг, посадив самолет практически вручную, почти без помощи приборов или бортовых компьютеров. XXI век идет своим чередом, и многие современные технологии, как мы говорили в первой главе, продолжают развиваться и распространяться по экспоненте. Так, компьютеры неотвратимо проникают в нашу жизнь, а мы в результате становимся все более уязвимы к их сбоям. Пару десятков лет назад компании, активно использовавшие компьютерные и информационные технологии, с нарастающей тревогой ждали наступления нового тысячелетия – призрак «проблемы 2000» грозил парализовать их работу. Этот программный сбой стал наследием до нелепости простого недосмотра при разработке программного обеспечения в 1970-е и 1980-е годы.
Отвечая на вопрос о дате рождения, многие из вас ответят шестизначным числом – для краткости. Некоторая двусмысленность может возникнуть, если свои дни рождения попросят написать одновременно тех, кому исполнилось 10 и 110 лет, но верную дату их рождения вполне можно определить из контекста. Компьютеры, однако, часто работают без такого контекста. Стремясь использовать машинную память (которая на заре компьютерной эпохи стоила очень дорого) как можно экономнее, большинство программистов вводили даты в шестизначном формате. Обычно они позволяли своим программам исходить из того, что дата относится к 1900-м годам. Но если дата относилась к следующему веку, это могло привести к ошибке. С приближением нового тысячелетия компьютерные специалисты стали предупреждать, что многие компьютерные программы, возможно, не смогут различить 2000 и 1900 годы – да и первый год любого последующего столетия, если уж на то пошло.
Когда при переходе с 31 декабря 1999 года на 1 января 2000 года часы в конце концов показали полночь, мало что изменилось. Самолеты не посыпались с неба, деньги не исчезли со счетов, а ядерные ракеты остались в своих шахтах. Отсутствие немедленных драматических последствий привело к широкому распространению мнения о том, что опасения по поводу «ошибки 2000» были преувеличены. Некоторые циники даже предположили, что компьютерная индустрия, возможно, намеренно раздула масштабы проблемы, чтобы погреть на этом руки. Противоположная точка зрения заключается в том, что серьезнейшая подготовка и профилактика помогли избежать множество потенциальных катастроф. По миру разошлась куча любопытных историй о казусах, приключившихся с незащищенными компьютерными системами. Забавно, что на сайте Военно-морской обсерватории США – организации, отвечающей за соблюдение официального времени страны, – появилась дата «1 января 19100 года». Однако некоторые симптомы «проблемы тысячелетия» были не такими уж смехотворными.
В 1999 году лаборатория патологии при Северном центральном госпитале Шеффилда была региональным центром тестирования на синдром Дауна. Результаты тестов беременных женщин, проживающих на востоке Великобритании, отправлялись в Шеффилд для анализа в рамках сложной компьютерной модели, действовавшей в информационной системе Национальной службы здравоохранения Англии PathLAN. Используя набор данных о женщинах – включая дату рождения, вес и результаты анализа крови, – модель рассчитывала риск рождения ребенка с синдромом Дауна. Такая оценка риска помогла женщинам принять решение о планировании беременности, а будущим матерям из группы высокого риска предлагалось более точное тестирование.
В течение января 2000 года сотрудники в Шеффилде обнаружили ряд отдельных мелких ошибок (связанных с датами) в системе PathLAN, но их быстро исправили и забыли о них. Позднее в том же месяце акушерка из одной из подведомственных госпиталю больниц сообщила, что получила из системы гораздо меньше сообщений о пациентах с повышенным риском развития синдрома Дауна, чем она ожидала. Через три месяца она проинформировала, что ситуация повторилась, но в обоих случаях сотрудники лаборатории заверили ее в том, что все в порядке. В мае акушерка из другой больницы сообщила о столь же малом количестве результатов анализов с повышенной степенью риска. В конце концов руководителя лаборатории патологии убедили проверить результаты. Он быстро понял, что что-то не так – «ошибка 2000» в этом случае оказалась реальной проблемой.
В лабораторной компьютерной модели для расчета возраста использовалась дата рождения матери со ссылкой на текущую дату. Возраст матери является важным фактором риска, при этом у женщин старшего возраста значительно выше вероятность рождения ребенка с синдромом Дауна. После 1 января 2000 года, вместо того чтобы вычесть 1965 год рождения из 2000 года, чтобы получить возраст 35 лет, 65 вычиталось из 0, что давало отрицательный результат, который компьютер не мог понять, но принимал – вместо того чтобы вызывать сообщение об ошибке. Бессмысленное значение возраста резко искажало расчет риска, в результате чего многих немолодых матерей определили в категорию с пониженным риском. В результате случилось несчастье, подобное тому, что постигло Флору Уотсон, мать младенца Кристофера, душераздирающая историю ложноотрицательного анализа, которого мы рассказали во второй главе. Более 150 женщин получили письма, в которых вероятность развития у их нерожденных детей синдрома Дауна была указана некорректно – типичный случай ложноотрицательного диагноза. Четыре из этих женщин, которым в противном случае могли бы предложить дальнейшее тестирование, родили детей с синдромом Дауна, а еще две сделали травматические аборты на поздних стадиях беременности.