9 сентября 1945 года официально был зарегистрирован первый в истории баг. Именно в этот день ученые Гарвардского университета, тестировавшие вычислительную машину Mark II Aiken Relay Calculator, нашли мотылька, застрявшего между контактами электромеханического реле. Грейс Мюррей Хоппер (американская ученая-компьютерщица и контр-адмирал ВМС США) записывает в журнал — «Первый реальный случай обнаружения ошибки (бага, жучка)».
Не допустить ошибок при создании программ чрезвычайно сложно. К счастью, не все ошибки обходятся дорого и не все становятся достоянием публики. Однако некоторые наносят большие убытки. В этом списке — некоторые самые известные или дорогие ошибки в программном обеспечении.
Взрыв Ariane 5
4 июня 1996 года ракета Ariane 5, запущенная Европейским космическим агентством (ESA), взорвалась всего через сорок секунд после запуска из Куру во Французской Гвиане. Ракета осуществляла первый полет после десятилетия разработки, стоившего 8 миллиардов долларов, а результатом этой ошибки стала потеря в 370 миллионов долларов.
Причиной отказа было целочисленное переполнение, которое является широко распространенной ошибкой в компьютерном программировании. В этом случае была предпринята попытка уместить 64-битное число в 16-битной переменной.
PayPal подарил пользователю 92 квадриллиона долларов
Когда Крис Рейнольдс открыл свой PayPal, остаток на счету торговца из Пенсильвании составлял 92 233 720 368 547 800 долларов. И на короткое время Рейнольдс стал самым богатым человеком в мире.
Ошибка была быстро обнаружена, и к тому времени, как он вошел в систему второй раз, его учетная запись уже обнулилась.
PayPal предложил выплатить неопределенную сумму денег на благотворительность по выбору Рейнольдса.
Ошибка калькулятора Windows
Эта ошибка существует в большинстве версий Windows (кроме Windows 10), включая Windows XP, Windows 7, Windows Vista и Windows 8. Вы можете проверить баг в своей ОС, если у вас есть одна из этих версий.
Откройте калькулятор Windows, введите 4 и извлеките квадратный корень, вы получите два, а затем вычтите из него два. Вместо нулевого результата вы увидите разные результаты в разных версиях Windows.
Причина ошибки заключается в том, как калькулятор обрабатывает операции извлечения корня. естественно, что результаты сохраняются как числа с плавающей запятой, а не как целые, и ошибки в точности, когда дело доходит до вычислений с плавающей запятой, являются тем, что вы видите.
Microsoft признала эту ошибку в приложении калькулятора и исправила ее в Windows 10 Build 17639.
Метрическая система и марсианский климатический спутник НАСА
Марсианский климатический орбитальный аппарат, построенный за 125 миллионов долларов, представлял из себя 338-килограммового космического робота, он был запущен 11 декабря 1998 года для изучения марсианской атмосферы и работы в качестве ретранслятора связи для марсохода в программе Mars Surveyor ’98.
Когда робот собирался выйти на орбиту планеты, связь прервалась. Орбитальный аппарат вошел в атмосферу Марса под неправильным углом, а не вышел на орбиту планеты. Причина заключалась в том, что навигационная группа в Лаборатории реактивного движения (JPL) использовала метрическую систему в своих расчетах, а Lockheed Martin в Денвере предоставил важные данные об ускорении в имперской системе — различные метрики вступили в конфликт друг с другом и уронили спутник.
Ошибка Pentium FDIV
Ошибка была обнаружена профессором математики Томасом Найсли в 1994 году. Эта ошибка является аппаратной ошибкой, затрагивающей модуль операций с плавающей запятой первых процессоров Intel Pentium. Из-за ошибки процессор может возвращать неверные результаты при делении чисел. Intel объяснил сбой отсутствием записей в справочной таблице, используемой схемами деления с плавающей запятой.
Не все процессоры имели этот сбой, но было обнаружено около 5 миллионов дефектных чипов. Intel вначале согласился заменить чип только в том случае, если клиенты смогут доказать, что на них повлияли результаты неправильных вычислений. Однако позже компания заменила чипы всем, кто пожаловался. В результате Intel это обошлось в 475 миллионов долларов.
Отказ ракеты Patriot
25 февраля 1991 года, во время войны в Персидском заливе, ракетная батарея Patriot в Саудовской Аравии не смогла отследить и перехватить приближающуюся иракскую ракету «Скад». Ракета «Скад» попала в казармы американской армии. В результате чего 28 солдат погибли, еще около сотни получили ранения.
Проблема заключалась в неточном подсчете времени из-за накапливаемых арифметических ошибок. Тех самых пресловутых операций с плавающей запятой. Возникающая ошибка округления после 8 часов работы приводила к тому, что система начинала промахиваться на 20%, а после 20 часов работы батарея уже не была способна поражать цели.
Примечательно, что Patriot Project Office ранее получил данные о дефекте в ракетной системе. Однако военные не приняли во внимание наличие ошибки заявив, что система предназначена для краткосрочных защитных операций, и что никто никогда не будет использовать систему больше 8 часов.
Gangnam Style сломал YouTube
Раньше счетчик YouTube использовал 32-битное целое число для определения максимального количества просмотров. Оно может достигать 2 147 483 647.
Видео Gangnam Style превысило это максимальное значение и мы получили известную ошибку переполнения.
В результате сейчас YouTube использует 64-битное целое число для своего счетчика. Это означает, что максимальное количество просмотров может достичь 9.22 квинтиллиона.
Заключение
Мы люди, и иногда делаем ошибки. Но будьте осторожны! Простая строка кода с ошибкой может стоить сотни миллионов долларов. Большое вам спасибо, что прочитали статью. Надеюсь, она показалась вам любопытной и забавной!