По статистике, на каждую тысячу строк написанного кода приходится от 3 до 20 ошибок — иногда это пропущенный пробел, иногда один лишний дефис. Одной такой мелочи вполне достаточно, чтобы произошла неизбежная катастрофа. Вот несколько простых компьютерных ошибок, которые привели к масштабным катастрофам.
Путаница в тысячелетиях
Первые компьютеры появились в 1950-х годах и имели очень небольшой объем памяти. По этой причине программисты, в целях экономии, использовали двузначное обозначение годов — вместо 1955 года они просто писали «55».
Проблема возникла с наступлением 2000 года, когда многие компьютерные системы стали допускать одну и ту же ошибку — дата «00» означала для них 1900 год. В конечном итоге сбой оказался не таким серьезным, но, по подсчетам, на «обновление» всех компьютерных систем было потрачено сотни миллионов долларов.
Високосная секунда
В мире существует такое понятие, как високосная секунда. Каждые несколько лет, обычно в июне или декабре, к году добавляется одна секунда для синхронизации всемирного координированного времени со средним солнечным временем.
30 июня 2012 года компьютеры Linux были сбиты с толку, когда их часы достигли 23:59:60 UTC. Такая мелочь помешала пользователям авторизоваться в основных сервисах Google, Reddit, LinkedIn и других подобных сервисах, а также создала “лазейку” для хакеров.
Самый дорогой дефис в истории
22 июля 1962 года НАСА запустило ракету для доставки зонда «Маринер-1» на орбиту Венеры. Но банальная ошибка в программном коде ракеты привела к катастрофе. Компьютерная программа не нашла в инструкциях дефис, который должен был отвечать за любое изменение скорости, и стала принимать радиосигналы с других систем наведения.
Неправильные сигналы сбили ракету с курса, она начала совершать серию резких движений, чтобы отрегулировать свою скорость. Во время полета никто не понимал, в чем причина, поэтому инженеры НАСА решили уничтожить ракету уже через несколько минут после запуска. Пропущенный дефис обошелся агентству в миллионы долларов.
Therac-25: машина-убийца
В период с 1985 по 1987 год лучевая терапия проводилась с помощью аппарата Therac-25. В инновационном устройстве, которое должно было впервые выполнять несколько операций одновременно, использовался старый код.
Через некоторое время система вышла из строя и стала искажать результаты. Ошибка привела как минимум к пяти смертям, поскольку пациенты получали гораздо большие дозы облучения, чем следовало. Этот случай до сих пор широко обсуждается в большинстве ИТ-университетов.
«Пьяный» Apple Maps
В 2012 году Apple решила отказаться от Google Maps и представила новое мобильное приложение Apple Maps с функцией Street View (свой панорамный вид улиц). Проблема в том, что алгоритмы компании немного сбились и стали генерировать вид прямо из постапокалиптического мира: изогнутые мосты, расплющенные автомобили, сюрреалистичные деревья.
К счастью, ошибка не принесла никакого вреда, а наоборот, вызвала много смеха у пользователей.
Фунты или ньютоны?
Проэкт Mars Cilmate Orbiter закончился полным провалом. Зонд, который в 1998 году должен был изучать климат на Марсе, вошел в марсианскую атмосферу на слишком высокой скорости и не верной траектории. В результате аппарат стоимостью $190 млн сгорел в атмосфере.
В ходе расследования выяснилось, что команда наземного управления использовала в качестве единицы измерения силы фунты, в то время как программное обеспечение зонда считало значения в ньютонах. Короче говоря, зонд интерпретировал данные, приведенные в фунтах, в ньютоны. Ошибка обошлась НАСА очень дорого.
«Буря в пустыне»
Во время войны в Ираке, а точнее во время операции «Буря в пустыне», произошел сбой в работе противоракетных систем Patriot. В решающий момент системы не сработали должным образом, из-за чего погибло 28 солдат. Оказалось, что после 100 часов работы компьютер зацикливался на 0,003 секунды, и это время увеличивалось с каждым последующим часом. Через несколько дней ошибка достигла 0,3 секунды.
Этого было достаточно для того, чтобы Patriot некорректно среагировал в ключевой момент. Систему никто не тестировал более 100 часов, поскольку на это не было никаких указаний.