В одном бите от ядерной катастрофы

А хотите я вам страшилку на ночь расскажу? На данный момент большинство всех важных решений принимают и выполняют компьютеры. Совершенно автоматически. Не верите? Смотрите, подъезжаете вы к перекрестку на котором в этот момент не кстати загорается красный свет. Вы плавно нажимаете на тормоз и привычно останавливаете машину. Знакомая картина? На самом деле все происходит совсем не так.

Для начала светофором уже давно управляет автоматическая системы управления, задача которой - равномерно рассредоточить нагрузку на дорожную сеть. И хотя разгоняясь от предыдущего светофора вы, откровенно говоря, немного газанули (чтобы успеть до следующего красного), систему не дураки проектировали. Время переключения адаптируется в зависимости от времени суток и показаний датчиков, встроенный в полотно дороги. Шансов проскочить у вас не много.

Когда вы нажимаете на акселератор, перемещение педали никак не влияет на состав горючей смеси в двигателе. Вместо этого компьютер отслеживает положение педали и просит другой компьютер приготовить горючую смесь определенного состава, который зависит не только от положения педали, но и от кучи других параметров, включая приложенное усилие, дорожные условия, настройки машины, качество топлива и т.д. Как вы думаете, что произойдет, если программисты не оттестировали как следует этот алгоритм?

Нажатие на тормоз все еще передается на колеса почти напрямую, но и этот бастион скоро падет.

Чем сложнее система, тем больше вероятность того, что человек не приминает никаких решений напрямую. В самолетах концепция fly-by-wire давно победила ручное управление. Ракеты изначально летают в полностью автоматическом режиме. Финансовые системы практически полностью существуют в виртуальном мире. Решения о покупке и продаже принимаются автоматически. Медицинская техника? Это только кажется, что человек нажимает кнопку и что-то при этом решает. На самом дале нажатие кнопки всего лишь запускает глючный код, который определяет дозу рентгена, которую получит пациент. Атомные станции? Ядерный арсенал? Управляется опытными операторами? Не смешите мои тапочки. Опытные операторы только кнопки нажимают. Компьютеры принимают все решения.

Как компьютер принимает решение? А вот так:

if (speed < desired_speed)
{
    accelerate();
}

Для процессора, который выполняет этот код, принятие решение выглядит как одна-единственная инструкция условного перехода. Если условие истинно, то перейти по этому адресу, я если нет - то по другому. Один бит.

Достаточно ошибится в одном бите, чтобы выполнить действие, прямо противоположное действие задуманному. Разница между “отдать штурвал от себя” и “потянуть штурвал на себя” - один бит.

Страшно?

Дойдут руки - напишу почему это не совсем так. :-)

comments powered by Disqus