Математика жизни и смерти. 7 математических принципов, формирующих нашу жизнь — страница 37 из 54

х служб, он мог вспомнить, что плотность авиационного топлива в килограммах на литр, конечно же, меньше плотности воды, но, с другой стороны, Канада только недавно перешла на метрические величины. А Air Canada переходила на метрическую систему долго и трудно, и в техническую документацию вкралась ошибка: коэффициент плотности топлива 1,77 был дан в фунтах на литр, а не в килограммах на литр. Правильный показатель в два с лишним раза меньше – 0,803 кг/л. Из-за этой ошибки на борту у Пирсона в Монреале в действительности было всего 6169 килограммов топлива. Наземной команде нужно было дозаправить самолет 20 088 литрами – вчетверо больше, чем 4917 литров, которые они залили. Так что запас топлива у рейса 143 был в два с лишним раза меньше необходимого. Двигатели заглохли не из-за механической неисправности. У 767-го просто кончилось топливо.

Пострадавший самолет продолжал планировать по направлению к Виннипегу – пилоты надеялись, что смогут сесть с неработающим двигателем, если верно рассчитают время. На счастье, Пирсон был еще и опытным планеристом, поэтому он приступил к расчету оптимальной скорости планирования, которая позволит добраться до Виннипега. Однако, когда рейс 143 вышел из облачности, немногочисленные приборы, запитанные от резервных батарей, подсказали Пирсону, что до Виннипега они не дотянут. Пирсон доложил об этом диспетчеру в Виннипег. Ему сообщили, что единственная взлетно-посадочная полоса в округе находится у местечка Гимли, примерно в 12 милях от их текущего положения. По еще одному – казалось бы удачному – совпадению Квинтал, в бытность свою летчиком Королевских ВВС Канады, служил как раз на той самой авиабазе под Гимли, так что аэродром этот он знал хорошо. Чего не знал ни он, ни кто-либо из диспетчеров вышки в Виннипеге, так это то, что аэропорт в Гимли с тех пор стал гражданским, а часть его переделана в арену для автоспорта. В тот самый момент на трассе проходили автомобильные гонки, и тысячи людей в автомобилях и автодомах наблюдали за ними в непосредственной близости от взлетно-посадочной полосы.

Подходя к взлетно-посадочной полосе, Квинтал попытался выпустить шасси, но с отказом двигателей отказали и гидравлические системы. Под действием силы тяжести задние шасси вышли и зафиксировались в замках. Носовое шасси тоже вышло, но не встало на фиксаторы – как вскоре выяснилось, это был третья счастливая случайность, которой многие пассажиры того рейса обязаны своими жизнями. В азарте гонки зрители и не подозревали, что на них бесшумно – двигатели не работали – планирует 100-тонная жестяная банка, пока она не оказалась почти над ними. Когда самолет коснулся взлетной полосы, Пирсон включил тормоза на максимум. Обе шины заднего шасси лопнули почти мгновенно. Одновременно с этим незафиксированная стойка носового шасси сложилась, не выдержав веса самолета. Нос лайнера ударился о землю, высекая фонтаны искр. Из-за возросшего трения самолет быстро затормозил – всего в нескольких сотнях метров от ошарашенных зрителей. Стюарды гонки среагировали быстро и бросились на трассу, чтобы потушить небольшие пожары в носу самолета, вызванные трением, и все 69 пассажиров и экипаж благополучно спустились по аварийным трапам.

Проблема 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 женщин получили письма, в которых вероятность развития у их нерожденных детей синдрома Дауна была указана некорректно – типичный случай ложноотрицательного диагноза. Четыре из этих женщин, которым в противном случае могли бы предложить дальнейшее тестирование, родили детей с синдромом Дауна, а еще две сделали травматические аборты на поздних стадиях беременности.

Бинарное мышление

Компьютеры, на которые мы все больше полагаемся, работают с самой примитивной базой – бинарной. При работе в десятеричной системе счисления для записи чисел требуется девять цифр и ноль. В двоичной системе помимо нуля нужна только одна цифра. Все двоичные числа представляют собой строки из единиц и нулей. Вообще, само слово «двоичный» – бинарный – происходит от латинского binarius, означающего «состоящий из двух частей». В двоичной позиционной системе одна и та же цифра, находящаяся слева от соседней, представляет собой число, больше того в 2 раза – а не в 10, как мы привыкли в десятеричной системе. Первый столбец справа представляет единицы, второй справа – двойки, третий – четверки, четвертый – восьмерки и так далее. Для записи числа вроде 11 нам нужна единица, двойка и восьмерка, но без четверки, поэтому число 11 в двоичной записи имеет вид 1011. Старая математическая шутка гласит: «Есть только 10 типов людей: те, кто понимает двоичную систему, и те, кто не понимает» – 10 здесь, конечно же, представляет число два в двоичной записи.

Двоичная система была выбрана в качестве основы для компьютерных технологий не потому, что математические вычисления как-то особенно приятно производить именно в ней, а потому, что компьютер построен именно таким образом. Каждый современный компьютер состоит из миллиардов крошечных электронных компонентов, называемых транзисторами, которые взаимодействуют друг с другом, передавая и сохраняя данные. Протекание электрического тока через транзистор – прекрасный способ представления числовой величины. Вместо десяти вариантов напряжения на каждом транзисторе (которые еще нужно уверенно распознавать) для работы в десятеричной системе гораздо разумнее обойтись двумя: есть напряжение – нет напряжения, включен – выключен. Эта система «да – нет» означает, что на транзистор можно подать небольшое напряжение, чтобы получить надежный, однозначно интерпретируемый сигнал, не зависящий от колебаний. Математики показали, что чисто теоретически, комбинируя сигналы «да» и «нет» с этих транзисторов с логическими операциями типа «и», «или» и «нет», можно вычислить ответ на любую математическую задачу – если такой ответ у нее есть – вне зависимости от ее сложности. Современные компьютеры прошли долгий путь к практической реализации этой теории. Они способны выполнять невероятно сложные вычисления, преобразовывая наши запросы в серии из единиц и нулей и применяя холодную жес