Самая красивая ошибка

Самые дорогие и судьбоносные ошибки в ИТ-индустрии

Время на прочтение
8 мин

Количество просмотров 78K

Досадные ошибки в программном обеспечении могут стоить компаниям очень дорого и даже ставят под угрозу существование их бизнеса. Однако ошибки, которые допускает сам «бизнес», влияют на судьбу ИТ-индустрии и судьбы целых поколений.

Первый баг был зафиксирован 9 сентября 1945 года: в вычислительной машине Mark II Aiken Relay Calculator нашли мотылька, застрявшего между контактами электромеханического реле, что приводило к ошибкам. Извлеченное насекомое было вклеено в технический дневник с сопроводительной надписью: «First actual case of bug being found». Этот забавный факт и положил начало использованию слова «баг» в современном значении.

Ракета «Маринер-1»: ущерб в 18,5 млн долларов

21 июля 1962 с Мыса Канаверал был произведен запуск ракеты-носителя «Атлас», несущей аппарат «Маринер-1», который должен был отправиться к Венере. Через несколько минут после взлета ракета отклонилась от курса и была подорвана из соображений безопасности.


Фото: NASA

«Инженеры, проанализировавшие записи телеметрии, вскоре обнаружили, что причиной послужили две независимых ошибки. Антенна ведения на „Атласе“ была изготовленна некачественно, с параметрами ниже заявленных. Когда получаемый ракетой сигнал стал слабым и зашумленным, ракета потеряла привязку к сигналу с Земли, посредством которого передавались команды поворота. Такая возможность была предусмотрена; в случае потери сигнала радиоведения бортовой компьютер должен был игнорировать сигналы с неисправной антенны и выполнять собственную программу, которая, возможно, смогла бы обеспечить успешный запуск. Однако, в этот момент проявилась вторая ошибка. Каким-то образом в программе ведения оказался пропущенным дефис, что привело к некорректному управлению ракетой — уходу влево и опусканию носа. Дефис был пропущен и во время предыдущих успешных запусков „Атласа“, но эта часть программы не использовалась, т.к. не происходило разрыва радиосвязи. Таким образом, первая попытка Штатов осуществить межпланетный перелет потерпела крах из-за пропущенного дефиса.» (Oran W. Nicks, NASA, 1985)

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

Cтадион «Хартфорд Колизей»: ущерб в 90 млн долларов

18 января 1978 года болельщики чудом избежали смерти на стадионе «Хартфорд Колизей». Через несколько часов после того, как они покинули стадион, его стальная крыша рухнула на трибуны.

Причина случившегося – ошибка в расчетах при проектировании конструкции. Уже в то время для строительного проектирования создавался специальный софт. Программист не учел такие факторы, как мокрый снег и ветер при расчете прочности балок, поддерживающих крышу. Он исходил только из веса самой крыши. В результате одна из опор неожиданно прогнулась под воздействием снега, это вызвало цепную реакцию, которая сложила всю конструкцию вместе с другими участками крыши как костяшки домино.

15 января 1990 года ошибка в новой версии прошивки междугородних коммутаторов привела к сбою 114 коммутаторов

Из-за этого более 60 тысяч человек остались без междугородней связи на 9 часов. Согласно программе, коммутатор должен перезагрузиться, если получит соответствующий сигнал, однако этот сигнал по ошибке пересылался каждый раз при восстановлении после сбоя какого-либо коммутатора.

Все началось с падения и перезагрузки коммутатора в Нью-Йорке, который вызвал масштабную цепную реакцию, в результате которой 114 коммутаторов перезагружались непрерывно каждые 6 секунд. Сначала компания обвиняла хакеров, однако позже выяснилось, что причиной стала одна неверная строка кода, в которой реализовывалась отправка сигнала.

Баг в процессоре Pentium: ущерб в 475 миллионов долларов

В 1994 году профессор математики Линчбургского колледжа Томас Найсли обнаружил баг в популярном процессоре Pentium и опубликовал об этом статью.

Ошибка Pentium FDIV — это ошибка в модуле операций с плавающей запятой в оригинальных процессорах Pentium, выпускавшихся фирмой Intel в 1994 году. Ошибка выражалась в том, что при проведении деления над числами с плавающей запятой при помощи команды процессора FDIV в некоторых случаях результат мог быть некорректным.

Согласно заявлению Intel причиной проблемы послужили неточности в таблице поиска, используемой при проведении операции деления.

Компания Intel в ответ на это замечание заявила, что готова заменять процессоры по требованию пользователей, которые смогли бы доказать, что пострадали в результате этой ошибки.

По прогнозам Intel, вероятность её возникновения была столь низкой, что подавляющее большинство пользователей даже не заметили бы её. Однако возмущённые клиенты потребовали заменить процессоры всем желающим. Финансовые потери Intel в результате составили около 475 миллионов долларов.

Ракета Ariane 5: ущерб в 8,5 млрд долларов

4 июня 1996 года случился неудачный запуск ракеты-носителя Ariane 5, которая была разработана Европейским космическим агентством. Ракета разрушилась на 39-й секунде полета из-за неверной работы бортового программного обеспечения. Эта история запомнилась, как одна из самых дорогостоящих компьютерных ошибок.

В системе управления полетом новой ракеты Ариан 5 использовались фрагменты программного обеспечения ракеты Ариан 4, в частности системы инерциальной навигации. Однако при переносе этой системы для использования на новой ракете, разработчиками не были учтены все особенности. Из-за другой траектории выведения ракеты на 30-й секунде после запуска значение горизонтальной скорости превысило установленные в программе ограничения и вызвало сбой в работе компьютера.

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

Программное обеспечение, установленное на борту Ariane 5, было разработано для более ранней модели – Ariane 4. Более мощный двигатель Ariane 5 спровоцировал баг, не встречавшийся в предыдущих версиях ПО.

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

На разработку Ariane 5 было потрачено около 8 миллиардов долларов. Общая стоимость спутников, которые должна была вывести на орбиту эта ракета, составляла 500 миллионов долларов.

Cпутник «Mars Climate Orbiter»: ущерб в 125 млн долларов

Из-за фатальной ошибки аппарат оказался слишком близко к поверхности Марса.

Аппарат летел к Марсу 9 месяцев. Mars Climate Orbiter 23 сентября 1999 года должен был выдать тормозной импульс и перейти на высокоэллиптическую орбиту с периодом 14 часов, а затем в течение двух месяцев с помощью ряда аэродинамических маневров в верхней атмосфере Марса довести орбиту до круговой. В расчетное время на высоте 193 км аппарат включил двигатели на торможение. Через 5 минут MCO запланировано ушел за Марс и больше никаких сигналов с него не поступало. Из анализа данных было предположено, что аппарат прошел над поверхностью Марса на высоте 57 км вместо расчетных 110 км и распался в атмосфере.

Субподрядчик, который работал над многими инженерными задачами, не выполнил простейшего преобразования английских единиц измерения в метрическую систему. Диспетчеры пришли к выводу, что спутник на большой скорости вошел в марсианскую атмосферу, где из-за возникших перегрузок его системы связи вышли из строя.

Бизнес-ошибки в ИТ

Часто возникают вопросы — отчего в мире информационных технологий некоторые крупнейшие сделки так и остаются нереализованными, а самые перспективные продукты не развиваются? Обычно причина в том, что их лидеры не могут предугадать будущее развитие событий.

А ведь события могли сложиться так, что не появились бы ни Microsoft, ни Apple. В альтернативном мире главным поисковым сервером был бы не Google, а Yahoo. Самым распространенным компьютером был бы Xerox, самой популярной социальной сетью – CompuServe. А музыку мы слушали бы через RealPod.

Спасение Apple

В конце 1990-х годов продажи компьютеров Apple Mac существенно снизились. Этому способствовали более дешевые конкуренты – Power Computing и Radius. Цена акций Apple упала до $5. Но неожиданно помощь пришла от Microsoft: помощь в размере $150 миллионов. Кроме того, Microsoft пообещала продолжить разработку своего пакета офисных программ для MacOS.

Из-за такого решения Microsoft лишила себя определенных перспектив. Вполне возможно, сегодня на рынке царили бы WinPhone, музыку на них мы бы качали через WinTunes. А все пользователи до сих пор с нетерпением ожидали бы выхода достойной альтернативы Windows.

Потерянный рынок

В середине 1990-х годов, еще до появления Google, самой продвинутой поисковой машиной была даже не Yahoo, не AltaVista, не Lycos или Hot Wired. Система Open Text, как и Google сегодня, работала максимально быстро, точно, охватывая весь объем информации. В 1995 году менеджеры компании Open Text небезосновательно утверждали, что их система смогла проиндексировать каждое слово из 5 миллионов документов, которые на тот момент и составляли Всемирную сеть.

Однако в 1997 году разработчики Open Text посчитали рынок поиска недостаточно перспективным и занялись системами управления корпоративными данными. Ну а через год появилась компания Google, которая показала, что они ошибались на счет перспектив этого рынка.

Ситуация могла сложиться иначе, а сам Google мог бы не занимать сейчас лидирующую позицию. Скорее всего, сервисы работы с информацией в Интернете были бы другими.

CompuServe и упущенное лидерство

CompuServe 24 сентября 1979 года запустила первый информационный сервис MicroNET, доступ к которому осуществлялся по телефонным линиям. Сервис позволял участникам сети передавать файлы, получать доступ к новостям и событиям, обмениваться сообщениями и присоединяться к дискуссионным форумам. В 1980 году сервис был переименован в CompuServe Information Service (CIS).

Конечно, пользователей сервиса привлекали прежде всего не новости, а возможность общаться, и появившаяся в 1980 году программа CB Simulator, обеспечивающая чат в реальном времени, стала невероятно популярной. В начале 1981 года число пользователей CIS перевалило за 10 тысяч, а к началу 1990-х исчислялось миллионами, в то время сервис был самым популярным в США. Компания имела базу лояльных клиентов, обилие информации об их вкусах, полезная база знаний и практически полное отсутствие каких-либо конкурентов в этой нише.

Однако сервис все еще имел текстовый интерфейс и поминутную тарификацию. Именно это позволило AOL, которая предложила более интересное интерфейсное решение и возможность неограниченного по времени общения за небольшую месячную абонентскую плату, потеснить CompuServe.

Сервис не смог укрепиться на рынке по простой причине — компания не хотела вкладывать в свои преимущества деньги, чтобы потом монетизировать результаты.

Компьютеры Xerox

Alto от компании Xerox был первым в мире компьютером с пользовательским интерфейсом в виде окон. Он был создан за 10 лет до появления персональных компьютеров под управлением Windows и Maс, задолго до микрокомпьютеров MITS Altair.

Alto поставлялся с мышью, имел возможность подключаться к локальной сети. Кроме того, на нем был предустановлен текстовый редактор, работавший по принципу WYSIWYG («получаешь то, что видишь»).
К сожалению для компании Xerox, в 1973 году рынка персональных компьютеров просто не существовало. Компания создала несколько тысяч таких компьютеров, которые были размещены в университетах страны. Но дальше этого распространение этих машин не пошло, а Xerox никак не пыталась их продвигать.

Когда в компании поняли, что допустили серьезную ошибку, было уже поздно. Была начата работа по продвижению графической рабочей станции Xerox Star, но это уже не могло изменить ситуацию: в результате на рынке прочно закрепились персональные компьютеры с Windows и Mac OS.

Непроданный Facebook

В 2006 году, когда Facebook было всего два года, широкая общественность относилась к ней, как к узкопрофильной социальной сети для студентов. В то время на Facebook было зарегистрировано 8 миллионов пользователей. В то время как аудитория MySpace превышала 100 миллионов.

Компания Yahoo предложила Марку Цукербергу $1 миллиард за его детище. В июне 2006 года Цукерберг подписал контракт о продаже Facebook.

Однако, на фоне резкого ухудшения финансового положения Yahoo, ее тогдашний гендиректор Терри Сэмел сбавил сумму до $800 миллионов. Цукерберг отказался продавать компанию за эти деньги. Через два месяца Yahoo вернулась к предыдущим условиям сделки, но было уже поздно. После этого дела этой компании шли все хуже. Теперь она продана холдингу Verizon. В начале 2000-х годов капитализация Yahoo превышала $125 миллиардов. Теперь Verizon купила компанию всего за $4,83 миллиарда.

Странная идея

Информация о том, что iPod придумал Стив Джобс, не совсем верна. Руководство компании Real Networks не оценило идею Тони Фэделла о создании совершенно нового типа музыкального плеера. К тому времени рынок был уже насыщен MP3 плеерами.

Но его плеер был тоньше и меньших размеров, а система доставки контента давала меломанам простые способы наполнить свой плеер новой музыкой. Так, в 2000-ом году Стив Джобс согласился сотрудничать с Тони Фэделлом. Джобс доработал дизайн плеера, а другие специалисты Apple доработали систему доставки контента, которая получила имя iTunes.

В результате около 80% рынка цифровой музыки сегодня принадлежит компании Apple. Сам Тони Фэделл проработал в отделении, разрабатывающем iTunes до ноября 2008 года. А компания Real Networks все так же производит обычные плееры. Однако ее доходы не идут ни в какое сравнение с тем, сколько iTunes приносит корпорации Apple.

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.

Метрическая система и марсианский климатический спутник НАСА

7 самых известных или дорогих ошибок в программном обеспечении

Марсианский климатический орбитальный аппарат, построенный за 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 квинтиллиона.

Заключение

Мы люди, и иногда делаем ошибки. Но будьте осторожны! Простая строка кода с ошибкой может стоить сотни миллионов долларов. Большое вам спасибо, что прочитали статью. Надеюсь, она показалась вам любопытной и забавной!

Источник

Если вы нашли опечатку — выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.

Самые дорогие и судьбоносные ошибки в ИТ-индустрии

Время на прочтение
8 мин

Количество просмотров 75K

Досадные ошибки в программном обеспечении могут стоить компаниям очень дорого и даже ставят под угрозу существование их бизнеса. Однако ошибки, которые допускает сам «бизнес», влияют на судьбу ИТ-индустрии и судьбы целых поколений.

Первый баг был зафиксирован 9 сентября 1945 года: в вычислительной машине Mark II Aiken Relay Calculator нашли мотылька, застрявшего между контактами электромеханического реле, что приводило к ошибкам. Извлеченное насекомое было вклеено в технический дневник с сопроводительной надписью: «First actual case of bug being found». Этот забавный факт и положил начало использованию слова «баг» в современном значении.

Ракета «Маринер-1»: ущерб в 18,5 млн долларов

21 июля 1962 с Мыса Канаверал был произведен запуск ракеты-носителя «Атлас», несущей аппарат «Маринер-1», который должен был отправиться к Венере. Через несколько минут после взлета ракета отклонилась от курса и была подорвана из соображений безопасности.


Фото: NASA

«Инженеры, проанализировавшие записи телеметрии, вскоре обнаружили, что причиной послужили две независимых ошибки. Антенна ведения на „Атласе“ была изготовленна некачественно, с параметрами ниже заявленных. Когда получаемый ракетой сигнал стал слабым и зашумленным, ракета потеряла привязку к сигналу с Земли, посредством которого передавались команды поворота. Такая возможность была предусмотрена; в случае потери сигнала радиоведения бортовой компьютер должен был игнорировать сигналы с неисправной антенны и выполнять собственную программу, которая, возможно, смогла бы обеспечить успешный запуск. Однако, в этот момент проявилась вторая ошибка. Каким-то образом в программе ведения оказался пропущенным дефис, что привело к некорректному управлению ракетой — уходу влево и опусканию носа. Дефис был пропущен и во время предыдущих успешных запусков „Атласа“, но эта часть программы не использовалась, т.к. не происходило разрыва радиосвязи. Таким образом, первая попытка Штатов осуществить межпланетный перелет потерпела крах из-за пропущенного дефиса.» (Oran W. Nicks, NASA, 1985)

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

Cтадион «Хартфорд Колизей»: ущерб в 90 млн долларов

18 января 1978 года болельщики чудом избежали смерти на стадионе «Хартфорд Колизей». Через несколько часов после того, как они покинули стадион, его стальная крыша рухнула на трибуны.

Причина случившегося – ошибка в расчетах при проектировании конструкции. Уже в то время для строительного проектирования создавался специальный софт. Программист не учел такие факторы, как мокрый снег и ветер при расчете прочности балок, поддерживающих крышу. Он исходил только из веса самой крыши. В результате одна из опор неожиданно прогнулась под воздействием снега, это вызвало цепную реакцию, которая сложила всю конструкцию вместе с другими участками крыши как костяшки домино.

15 января 1990 года ошибка в новой версии прошивки междугородних коммутаторов привела к сбою 114 коммутаторов

Из-за этого более 60 тысяч человек остались без междугородней связи на 9 часов. Согласно программе, коммутатор должен перезагрузиться, если получит соответствующий сигнал, однако этот сигнал по ошибке пересылался каждый раз при восстановлении после сбоя какого-либо коммутатора.

Все началось с падения и перезагрузки коммутатора в Нью-Йорке, который вызвал масштабную цепную реакцию, в результате которой 114 коммутаторов перезагружались непрерывно каждые 6 секунд. Сначала компания обвиняла хакеров, однако позже выяснилось, что причиной стала одна неверная строка кода, в которой реализовывалась отправка сигнала.

Баг в процессоре Pentium: ущерб в 475 миллионов долларов

В 1994 году профессор математики Линчбургского колледжа Томас Найсли обнаружил баг в популярном процессоре Pentium и опубликовал об этом статью.

Ошибка Pentium FDIV — это ошибка в модуле операций с плавающей запятой в оригинальных процессорах Pentium, выпускавшихся фирмой Intel в 1994 году. Ошибка выражалась в том, что при проведении деления над числами с плавающей запятой при помощи команды процессора FDIV в некоторых случаях результат мог быть некорректным.

Согласно заявлению Intel причиной проблемы послужили неточности в таблице поиска, используемой при проведении операции деления.

Компания Intel в ответ на это замечание заявила, что готова заменять процессоры по требованию пользователей, которые смогли бы доказать, что пострадали в результате этой ошибки.

По прогнозам Intel, вероятность её возникновения была столь низкой, что подавляющее большинство пользователей даже не заметили бы её. Однако возмущённые клиенты потребовали заменить процессоры всем желающим. Финансовые потери Intel в результате составили около 475 миллионов долларов.

Ракета Ariane 5: ущерб в 8,5 млрд долларов

4 июня 1996 года случился неудачный запуск ракеты-носителя Ariane 5, которая была разработана Европейским космическим агентством. Ракета разрушилась на 39-й секунде полета из-за неверной работы бортового программного обеспечения. Эта история запомнилась, как одна из самых дорогостоящих компьютерных ошибок.

В системе управления полетом новой ракеты Ариан 5 использовались фрагменты программного обеспечения ракеты Ариан 4, в частности системы инерциальной навигации. Однако при переносе этой системы для использования на новой ракете, разработчиками не были учтены все особенности. Из-за другой траектории выведения ракеты на 30-й секунде после запуска значение горизонтальной скорости превысило установленные в программе ограничения и вызвало сбой в работе компьютера.

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

Программное обеспечение, установленное на борту Ariane 5, было разработано для более ранней модели – Ariane 4. Более мощный двигатель Ariane 5 спровоцировал баг, не встречавшийся в предыдущих версиях ПО.

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

На разработку Ariane 5 было потрачено около 8 миллиардов долларов. Общая стоимость спутников, которые должна была вывести на орбиту эта ракета, составляла 500 миллионов долларов.

Cпутник «Mars Climate Orbiter»: ущерб в 125 млн долларов

Из-за фатальной ошибки аппарат оказался слишком близко к поверхности Марса.

Аппарат летел к Марсу 9 месяцев. Mars Climate Orbiter 23 сентября 1999 года должен был выдать тормозной импульс и перейти на высокоэллиптическую орбиту с периодом 14 часов, а затем в течение двух месяцев с помощью ряда аэродинамических маневров в верхней атмосфере Марса довести орбиту до круговой. В расчетное время на высоте 193 км аппарат включил двигатели на торможение. Через 5 минут MCO запланировано ушел за Марс и больше никаких сигналов с него не поступало. Из анализа данных было предположено, что аппарат прошел над поверхностью Марса на высоте 57 км вместо расчетных 110 км и распался в атмосфере.

Субподрядчик, который работал над многими инженерными задачами, не выполнил простейшего преобразования английских единиц измерения в метрическую систему. Диспетчеры пришли к выводу, что спутник на большой скорости вошел в марсианскую атмосферу, где из-за возникших перегрузок его системы связи вышли из строя.

Бизнес-ошибки в ИТ

Часто возникают вопросы — отчего в мире информационных технологий некоторые крупнейшие сделки так и остаются нереализованными, а самые перспективные продукты не развиваются? Обычно причина в том, что их лидеры не могут предугадать будущее развитие событий.

А ведь события могли сложиться так, что не появились бы ни Microsoft, ни Apple. В альтернативном мире главным поисковым сервером был бы не Google, а Yahoo. Самым распространенным компьютером был бы Xerox, самой популярной социальной сетью – CompuServe. А музыку мы слушали бы через RealPod.

Спасение Apple

В конце 1990-х годов продажи компьютеров Apple Mac существенно снизились. Этому способствовали более дешевые конкуренты – Power Computing и Radius. Цена акций Apple упала до $5. Но неожиданно помощь пришла от Microsoft: помощь в размере $150 миллионов. Кроме того, Microsoft пообещала продолжить разработку своего пакета офисных программ для MacOS.

Из-за такого решения Microsoft лишила себя определенных перспектив. Вполне возможно, сегодня на рынке царили бы WinPhone, музыку на них мы бы качали через WinTunes. А все пользователи до сих пор с нетерпением ожидали бы выхода достойной альтернативы Windows.

Потерянный рынок

В середине 1990-х годов, еще до появления Google, самой продвинутой поисковой машиной была даже не Yahoo, не AltaVista, не Lycos или Hot Wired. Система Open Text, как и Google сегодня, работала максимально быстро, точно, охватывая весь объем информации. В 1995 году менеджеры компании Open Text небезосновательно утверждали, что их система смогла проиндексировать каждое слово из 5 миллионов документов, которые на тот момент и составляли Всемирную сеть.

Однако в 1997 году разработчики Open Text посчитали рынок поиска недостаточно перспективным и занялись системами управления корпоративными данными. Ну а через год появилась компания Google, которая показала, что они ошибались на счет перспектив этого рынка.

Ситуация могла сложиться иначе, а сам Google мог бы не занимать сейчас лидирующую позицию. Скорее всего, сервисы работы с информацией в Интернете были бы другими.

CompuServe и упущенное лидерство

CompuServe 24 сентября 1979 года запустила первый информационный сервис MicroNET, доступ к которому осуществлялся по телефонным линиям. Сервис позволял участникам сети передавать файлы, получать доступ к новостям и событиям, обмениваться сообщениями и присоединяться к дискуссионным форумам. В 1980 году сервис был переименован в CompuServe Information Service (CIS).

Конечно, пользователей сервиса привлекали прежде всего не новости, а возможность общаться, и появившаяся в 1980 году программа CB Simulator, обеспечивающая чат в реальном времени, стала невероятно популярной. В начале 1981 года число пользователей CIS перевалило за 10 тысяч, а к началу 1990-х исчислялось миллионами, в то время сервис был самым популярным в США. Компания имела базу лояльных клиентов, обилие информации об их вкусах, полезная база знаний и практически полное отсутствие каких-либо конкурентов в этой нише.

Однако сервис все еще имел текстовый интерфейс и поминутную тарификацию. Именно это позволило AOL, которая предложила более интересное интерфейсное решение и возможность неограниченного по времени общения за небольшую месячную абонентскую плату, потеснить CompuServe.

Сервис не смог укрепиться на рынке по простой причине — компания не хотела вкладывать в свои преимущества деньги, чтобы потом монетизировать результаты.

Компьютеры Xerox

Alto от компании Xerox был первым в мире компьютером с пользовательским интерфейсом в виде окон. Он был создан за 10 лет до появления персональных компьютеров под управлением Windows и Maс, задолго до микрокомпьютеров MITS Altair.

Alto поставлялся с мышью, имел возможность подключаться к локальной сети. Кроме того, на нем был предустановлен текстовый редактор, работавший по принципу WYSIWYG («получаешь то, что видишь»).
К сожалению для компании Xerox, в 1973 году рынка персональных компьютеров просто не существовало. Компания создала несколько тысяч таких компьютеров, которые были размещены в университетах страны. Но дальше этого распространение этих машин не пошло, а Xerox никак не пыталась их продвигать.

Когда в компании поняли, что допустили серьезную ошибку, было уже поздно. Была начата работа по продвижению графической рабочей станции Xerox Star, но это уже не могло изменить ситуацию: в результате на рынке прочно закрепились персональные компьютеры с Windows и Mac OS.

Непроданный Facebook

В 2006 году, когда Facebook было всего два года, широкая общественность относилась к ней, как к узкопрофильной социальной сети для студентов. В то время на Facebook было зарегистрировано 8 миллионов пользователей. В то время как аудитория MySpace превышала 100 миллионов.

Компания Yahoo предложила Марку Цукербергу $1 миллиард за его детище. В июне 2006 года Цукерберг подписал контракт о продаже Facebook.

Однако, на фоне резкого ухудшения финансового положения Yahoo, ее тогдашний гендиректор Терри Сэмел сбавил сумму до $800 миллионов. Цукерберг отказался продавать компанию за эти деньги. Через два месяца Yahoo вернулась к предыдущим условиям сделки, но было уже поздно. После этого дела этой компании шли все хуже. Теперь она продана холдингу Verizon. В начале 2000-х годов капитализация Yahoo превышала $125 миллиардов. Теперь Verizon купила компанию всего за $4,83 миллиарда.

Странная идея

Информация о том, что iPod придумал Стив Джобс, не совсем верна. Руководство компании Real Networks не оценило идею Тони Фэделла о создании совершенно нового типа музыкального плеера. К тому времени рынок был уже насыщен MP3 плеерами.

Но его плеер был тоньше и меньших размеров, а система доставки контента давала меломанам простые способы наполнить свой плеер новой музыкой. Так, в 2000-ом году Стив Джобс согласился сотрудничать с Тони Фэделлом. Джобс доработал дизайн плеера, а другие специалисты Apple доработали систему доставки контента, которая получила имя iTunes.

В результате около 80% рынка цифровой музыки сегодня принадлежит компании Apple. Сам Тони Фэделл проработал в отделении, разрабатывающем iTunes до ноября 2008 года. А компания Real Networks все так же производит обычные плееры. Однако ее доходы не идут ни в какое сравнение с тем, сколько iTunes приносит корпорации Apple.

#подборки

  • 19 июл 2021

  • 0

Иногда ошибки в программах стоят миллионов долларов и даже уносят жизни людей. Расскажем о самых дорогих багах в истории IT.

Иллюстрация: Meery Mary для Skillbox Media

Антон Сёмин

Пишет об истории IT, разработке и советской кибернетике. Знает Python, JavaScript и немного C++, но предпочитает писать на русском.

Закон Мёрфи гласит: если что-то может пойти не так, это обязательно произойдёт. Яркий пример — фильм Стэнли Кубрика «2001: Космическая одиссея». По сюжету военные зашили в бортовой компьютер HAL 9000 жёсткую инструкцию, которая должна была скрывать от астронавтов истинные цели экспедиции. В результате искусственный интеллект перебил почти всех членов команды и сорвал операцию.

Но такие сюжеты встречаются не только в кино — в реальности дорогие компьютеры не раз сходили с ума и даже убивали людей. Расскажем о самых громких ошибках в ПО.

Этот баг изрядно потрепал нервы владельцам яблочных смартфонов, хотя всё закончилось хорошо и устройства удалось восстановить.

В 2016 году резвые пользователи reddit.com пронюхали фичу: если в 64-битной версии iOS установить время на 00:00:00 часов 1 января 1970 года, а потом перезагрузить смартфон, он больше не включится. Устройство буквально превращалось в кирпич: пользователь видел только логотип Apple, а повторная перезагрузка не помогала.

Шутка разлетелась по интернету, и даже незнакомые с Reddit пользователи стали экспериментировать. Кто-то разыгрывал знакомых владельцев айфонов и айпадов.

Во «ВКонтакте» и на форумах моментально появились «добрые» розыгрыши:

Подписчики «Двача» и МДК одними из первых в России протестировали «новую фичу» :) Скриншот: МДК

Опытным путём всё-таки удалось восстановить смартфоны: надо было подождать, пока они полностью разрядятся, или отключить аккумулятор вручную. После этого система запускалась с заводскими настройками.

Причина «окирпичивания» яблочной техники — UNIX-время и некачественное тестирование. Время в iOS отсчитывается от 1 января 1970 года — это условный ноль в UNIX-подобных системах.

В зависимости от часового пояса устройства добавляют смещение — прибавляют или отнимают необходимое количество часов. По одной из версий, когда пользователи из регионов с отрицательным смещением устанавливали злосчастную дату, время «уходило в минус». Например, в Нью-Йорке iPhone показывал бы −4 часа.

В итоге iOS не понимал, что делать с отрицательным временем, а инструкции, которые используют время, выкидывали белый флаг и просто-напросто ломались.

Но этой версии противоречат несколько фактов:

  1. На баг жаловались и в регионах с положительным смещением времени.
  2. Проблема вскрылась только на 64-битной версии.
  3. Неужели разработчики Apple могли не поставить элементарную проверку на отрицательные значения? WTF?!

По другой версии, операционная система «подавилась» слишком большим числом. Главная программа использует переменную времени при настройке окружения и действительно вычитает из неё какие-то константы.

И когда пользователи устанавливают время в ноль, оно не попадает в отрицательный диапазон, а становится равным 18 446 744 073 709 551 616 — это максимальное целое положительное число в 64-битной операционной системе.

В индекс Доу Джонса заложена стоимость акций 30 самых больших американских компаний — например, Apple, Coca-Cola и Intel. Ещё есть индекс S&P 500 — в него входит 505 компаний. По этим показателям оценивают «здоровье» экономики США: индексы «зеленеют» — экономика растёт, «краснеют» — экономика падает.

В октябре 1987 года индекс Доу Джонса упал на 22,6%, а S&P 500 — на 20,5%. Это вызвало эффект лавины на мировом фондовом рынке. Вслед за США обвалились Гонконг (на 46%), Австралия (на 42%), Канада (на 23%) и другие развитые экономики. Событие стало финансовой трагедией, а вину опять повесили на разработчиков.

Так выглядит чёрный понедельник инвестора. Скриншот: Ycharts

Эксперты всё ещё спорят об истинных причинах падения, но, по официальной версии, к кризису привела ошибка программного трейдинга. Специальная программа автоматически заключала сделки, чтобы инвесторам не приходилось постоянно следить за котировками и проводить все операции вручную. Машины ориентировались на движение рынка: индексы растут — закупаем, падают — продаём. Алгоритмами пользовались только крупные инвесторы вроде пенсионных фондов и центральных банков, поэтому объёмы программного трейдинга были велики.

Когда рынок немного качнуло, машины одновременно стали продавать акции на миллионы долларов. Но покупать их было некому, а потому программа ещё больше снижала цену. Случилось настоящее восстание машин: за один день американский рынок акций потерял около 500 млрд долларов. Вслед за американцами паника перекинулась и на другие страны — их экономики тоже просели на десятки процентов.

«Чёрный понедельник» ударил по развитым экономикам даже сильнее Великой депрессии. Зато государства и финансовые организации разработали правила для защиты частных инвесторов. Теперь биржи прекращают торги при падении S&P 500 на 7%, 13% и 20%, чтобы дать инвесторам принять взвешенное решение.

P. S. Объяснения рыночных воротил звучат красиво и убедительно, но мы-то с вами знаем, что на самом деле виноваты не разработчики, а рептилоиды с иллюминатами :)

Хотя финансовые игроки многому научились в 1987 году, история с «взбесившейся» программой повторилась спустя 25 лет.

Knight Capital была одной из крупнейших финансовых компаний в мире — с её помощью на фондовом рынке торговали страховщики, пенсионные фонды и банки. Через компанию проходила каждая шестая ценная бумага с бирж NYSE и NASDAQ. К тому же Knight Capital торговала собственными акциями и неплохо росла из года в год.

В начале 2010-х стала популярной высокочастотная торговля с помощью роботов. Они совершали сотни и тысячи сделок в секунду по заранее составленному алгоритму и помогали неплохо зарабатывать на минимальных скачках цены. Человек просто физически не мог выставлять столько ордеров в такие короткие сроки.

В 2012 году Knight Capital запустила своего робота — и сразу же всё пошло наперекосяк. Из-за ошибки в коде алгоритм за сорок минут умудрился провести более 2 млн сделок — а это недельная норма для рынка. Менеджеры компании смотрели и ничего не могли сделать: у программы просто не было «выключателя».

Кадр: фильм «Предел Риска»

За сорок минут робот успел потратить полмиллиарда долларов. Правда, из них только 365 млн принадлежало Knight Capital, а остальные деньги были заёмными. Вы удивитесь, но банки и фонды скинулись и спасли компанию от банкротства. Паники на фондовом рынке тоже не случилось — помогли защитные механизмы, которые придумали после «чёрного понедельника».

Первый полёт самой надёжной европейской ракеты Ariane 5 был неудачным. Гордость космической программы взорвалась через 40 секунд после старта из-за ошибки в управляющей программе. Этот баг признан самым дорогим в истории.

В течение 10 лет 10 стран Евросоюза потратили на проект 7 млрд долларов, половину из которых дала Франция. Ракета должна была вывести на геостационарную орбиту спутники для изучения магнитного поля Земли.

4 июня 1996 года миллионы европейцев в прямом эфире наблюдали, как в небе буквально сгорают их налоги. На высоте 4 тысяч метров Ariane 5 отклонился от прямой траектории и самоуничтожился. Оказывается, разработчики скопировали код из управляющей программы предыдущей модели ракеты, которая успешно взлетала больше сотни раз. Только они не учли, что Ariane 4 летел по другой траектории и с другой горизонтальной скоростью.

Фрагмент кода ракеты с ошибкой. Скриншот: moscova — Inria

Скопированный программный модуль неверно прочитал ситуацию и преобразовал 64-битное значение в 16-битное безо всякой проверки. Да, программа перехватила исключение — а вот отреагировала на него неадекватно и отправила на бортовой компьютер сигнал аварийного завершения. При этом с технической точки зрения полёт был абсолютно нормальным.

Евросоюз потерял год исследований и более 500 млн долларов. После аварии страны-участники провели открытое расследование и нашли все «золотые» баги. А спутники быстренько отправили в космос на российском «Союзе». Злополучный код для Ariane переписали на Ada, и ракета успешно стартовала в 1997 году.

Иногда баги приводят к смерти. В Национальном институте рака в Панаме из-за компьютерной ошибки погибли восемь человек и как минимум двадцать получили лучевую болезнь.

Врачи управляли камерой для облучения с помощью специальной программы: устанавливали дозу радиации, длительность терапии и положение четырёх защитных плит, которые укрывали здоровые ткани пациентов. Радиолог попросил добавить пятую плиту для дополнительной защиты, но программа разрешала ставить не больше четырёх. Тогда операторы придумали хитрость: фактически установить две плиты, а программе показать, что она всего лишь одна.

Позже выяснилось, что программа рассчитывала длительность терапии исходя из количества защитных блоков. Она позволяла вводить параметры, но итоговое время устанавливала сама. Поэтому после изменения настроек пациенты облучались в два раза дольше и у всех появились признаки лучевой болезни. Правда, врачи ещё несколько месяцев не обращали внимания на жалобы.

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

Идеальных программ не бывает, и все сценарии предугадать невозможно. Хакеры каждый день находят уязвимости в приложениях и устройствах, «ломают» небезопасные сайты. Но ошибки можно свести к минимуму, если правильно тестировать приложения и не вносить в них правки или «рацпредложения» по своему усмотрению, без попытки проверить последствия.


Научитесь: Профессия Инженер по тестированию
Узнать больше

В истории программирования не всегда все было легко и безоблачно. Ведь любому программисту, вне зависимости от опыта и технического бэкграунда, трудно уберечься от ошибок и порой даже небольшого количества плохого кода хватало, чтобы вызвать серьезную проблему. «Библиотека программиста» немного полистала ИТ-летописи и нашла для вас 10 самых худших ошибок в истории кодинга. Поехали!

1. Ошибка 2000 года

⚠️💻 10 самых известных ошибок в коде в истории программирования

Более двух десятилетий назад, в канун нового 2000 года, весь развитый мир охватила паника из-за проблемы способной привести к сбоям в работе компьютеров, падению самолетов, прекращению работы медицинского оборудования и разрушению глобальной финансовой системы.

Суть проблемы заключалась в том, что большинство устаревших информационных систем, созданных еще в 70-х и 80-х, использовали только две цифры для исчисления года. Это значит, что часы внутри микропроцессоров различного аппаратного ПО регистрировали 1999 год как «99», основываясь на ошибочном предположении разработчиков прошлого, что мы всегда будем жить в 20-м веке и цифра «19» в обозначении года никогда не изменится.

Тогда все полагали, что в 2000 году у всех нас наверняка будут реактивные ранцы, еда в форме таблеток, футуристическая серебристая униформа и человечество к этому времени откажется от старых компьютерных систем середины века. Но чуда не случилось!

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

2. Терак-25

⚠️💻 10 самых известных ошибок в коде в истории программирования

Плохой код на самом деле может убить. Такая катастрофа произошла с аппаратом лучевой терапии Therac-25, произведенным компанией Atomic Energy of Canada, ставшего причиной гибели не менее шести пациентов. Расследование выявило недоработку системы, вызвавшую передозировку радиацией. Связано это было с трудностью проведения автоматизированных тестов такого специфического программного обеспечения. И поэтому машина, призванная помочь людям, стала машиной для убийств из научной фантастики. Этот случай заставил разработчиков ПО медицинской отрасли крайне ответственно подходить к тестированию такого оборудования.

3. Сеть AT&T выходит из строя

⚠️💻 10 самых известных ошибок в коде в истории программирования

15 января 1990 года около 50 процентов мобильной сети AT&T вышло из строя. За девять часов простоя более 75 миллионов звонков остались без ответа. И хотя в первоначальных отчетах следствия по этому делу значилось хакерская атака, на самом деле, виновником сего происшествия стало стандартное обновление ПО. Ошибка всего в одной строке кода стоила компании огромных денег. Все организации, целиком зависящие от наличия и качества связи, выставили AT&T иски с внушительными суммами. К примеру, крупнейший авиаперевозчик American Airlines, понес колоссальные финансовые убытки из-за того, что получил наполовину меньше звонков своих клиентов из-за сбоя. Авария 1990 года до сих пор служит прекрасным примером важности тестирования программного обеспечения и служит напоминанием о неразрывной связи между технологиями и экономической деятельностью большинства компаний.

4. Досрочное освобождение заключенных

⚠️💻 10 самых известных ошибок в коде в истории программирования

В 2005 году в США штате Мичиган произошел сбой тюремной программы, отвечающей за расчет срока наказания заключенных, в результате чего более 20 заключенных досрочно вышли на свободу. Программа ошибочно посчитала смягчающий коэффициент и снизила срок пребывания отбывающих наказание людей в несколько раз. Ошибку в коде заметили не сразу, а лишь по прошествии некоторого времени. И поэтому меру пресечения счастливчикам никто не пересчитывал. Среди них, к слову, не было матерых гангстеров и маньяков. В основном это были мелкие правонарушители, отбывавшие срок за неуплату алиментов, махинации с налогами и незаконное хранение психотропов.

Произошедшее показывает, что в погоне за автоматизацией процессов и сокращением количества ручных операций программисты зачастую забывают о грамотной настройке разработанной системы и ее тестировании. А мы с вами в очередной раз убеждаемся, что даже незначительная ошибка может привести к серьезным последствиям.

5. Взрыв Ariane 5

⚠️💻 10 самых известных ошибок в коде в истории программирования

Случай произошел 4 июня 1996 года при первом запуске Ariane 5 — одной из самых надежных беспилотных ракетных установок, целью которой было изучение взаимодействия между солнечным ветром и магнитосферой Земли. Через 37 секунд после старта ракета, вылетевшая с космодрома, находящегося на берегах Французской Гвианы, развернулась на 90 градусов и всего через несколько секунд превратилась в огромный огненный шар.

Специальная группа прочесала место происшествия, собирая обломки, чтобы попытаться выяснить, что произошло. Через некоторое время техническая комиссия установила, что авария была вызвана программным сбоем.

Отказ системы произошел из-за полной потери информации о точности наведения ракеты и ориентации ее в пространстве, поступающей в центральный процессор. Потеря — следствие ошибки проектировщиков ПО и вызвана она была некорректным преобразованием 64-битного числа с плавающей запятой в 16-битное целое число.

К слову, целочисленное переполнение является широко распространенной ошибкой в ​​​​компьютерном программировании.

6. Ошибка Paypal

⚠️💻 10 самых известных ошибок в коде в истории программирования

Что бы вы сделали, если бы PayPal случайно зачислил на ваш счет 92 квадриллиона долларов? Крису Рейнольдсу, 56-летнему американцу, продающему автозапчасти на eBay, не пришлось долго об этом думать. Ведь он даже не успел ощутить себя первым в мире квадриллионером и самым богатым человеком в мире, так как ошибка была устранена в течение нескольких минут. Поэтому, прежде чем мужчина начал мечтать о новом кадиллаке и золотой карте члена королевского яхт-клуба, сумма на его счету вернулась к привычному балансу. Конечно, стоило бы потребовать с компании хотя бы часть этой суммы за моральный ущерб, но, видимо, шок от увиденного не позволил ему сделать это.

7. Калькулятор Windows

⚠️💻 10 самых известных ошибок в коде в истории программирования

Эта ошибка, существующая в большинстве версий Windows (кроме Windows 10), которую вы сможете проверить самостоятельно.

Для этого нужно:

  1. Открыть калькулятор Windows и ввести 4.
  2. Извлечь из этого числа квадратный корень и получите 2.
  3. Вычесть из него 2 и вместо нулевого результата в разных версиях Windows вы увидите разные результаты.

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

Microsoft признала эту ошибку в приложении калькулятора и исправила ее в Windows 10.

8. Проблема 2038 года

⚠️💻 10 самых известных ошибок в коде в истории программирования

Ошибка 2038 будет вызвана использованием 32-разрядных процессоров в 32-разрядных системах. Проще говоря, 19 января 2038 года наступит в 03:14:07. Компьютеры, которые все еще используют 32-разрядные системы для управления датой и временем, не смогут справиться с этим изменением. Как и в случае с ошибкой 2000 года, компьютеры не смогут отличить 2038 год от 1970 года.

Однако волноваться не стоит: почти все современные процессоры в настольных ПК имеют 64-битные системы с 64-битным программным обеспечением и в 2038 году само существование 32-битных систем будет под вопросом.

9. Видео Gangnam Style «сломало» YouTube

⚠️💻 10 самых известных ошибок в коде в истории программирования

Счетчик YouTube ранее использовал 32-битное целое число для определения максимального количества просмотров видеоролика, и равно оно было 2 147 483 647.

Однако корейская поп-группа PSY, выложившая на сервис свой клип с зажигательной песней Gangnam Style благополучно его сломала, превысив допустимую планку.

«Когда мы его делали, никогда не думали, что какое-нибудь видео посмотрят столько раз, но это было до Gangman Style», — написал на своей странице в сети один из разработчиков портала.

Клип PSY опубликовали 15 июля 2012 года и к концу мая 2014 года он стал единственным видеороликом, которой просмотрели больше 2 млрд раз.

В настоящее время YouTube использует 64-битное целое число для счетчика видео, что означает, что максимальное количество просмотров видео составляет 9,22 квинтиллиона.

10. Синий экран смерти

⚠️💻 10 самых известных ошибок в коде в истории программирования

BSOD или «Синий экран смерти» — жаргонное название фатальной системной ошибки Windows, показывающей системный сбой, при котором операционка достигала состояния, в котором она больше не могла надежно работать. Как правило, вызывалась она в Windows 95-98 после неожиданного завершения важного процесса или общего сбоя оборудования. Старожилы наверняка помнят этот баг, который довольно часто возникал на заре становления ИТ-культуры.

16 марта 2000 года Microsoft выпустила обновление для системы безопасности, устраняющее эту неполадку, однако и сейчас на форумах изредка можно встретить сообщение от пользователей об этой проблеме.

***

Людям свойственно совершать ошибки. Однако, будьте внимательны — всегда нужно помнить, что даже одна плохо написанная строчка кода может привести к печальным последствиям. Удачи!

Материалы по теме

  • ⚠️ 10 самых распространенных ошибок, ежедневно допускаемых каждым программистом
  • ⚠️ Как не нужно учить TypeScript: 5 распространенных ошибок
  • 😢 Дорогостоящие ошибки: почему нам пришлось отказаться от Firebase

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 квинтиллиона.

Заключение

Мы люди, и иногда делаем ошибки. Но будьте осторожны! Простая строка кода с ошибкой может стоить сотни миллионов долларов. Большое вам спасибо, что прочитали статью. Надеюсь, она показалась вам любопытной и забавной!

Источник

Если вы нашли опечатку — выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.

Ещё совсем свежа память об уязвимости Heartbleed в Open SSL, поставившей под удар сотни тысяч приложений по всему миру. Пока дотошные багоискатели продолжают исследовать код Open SSL в поисках новой ошибки, способной с не меньшей силой заставить сердца специалистов по безопасности ныть от тревожного предчувствия, мы решили оглянуться назад и вспомнить самые дорогостоящие и ужасные по последствиям технологические катастрофы, случившиеся из-за ошибок разработчиков программного обеспечения. От потерянных в глубинах космоса спутников, стоимостью в годичный ВВП небольшого островного государства, до печально известного червя Морриса, мутировавшего из безобидного эксперимента в напасть года, что, кстати, не помешало его автору стать уважаемым человеком — профессором MIT и сооснователем Y Combinator.

Momento bagus, software engineer!

В 1998 году агентство NASA потеряло в космосе спутник «Mars Climate Orbiter». Эта катастрофа озадачила инженеров — удивительно, как такое могло поизойти. В результате оказалось, что субподрядчик, который работал над многими инженерными задачами, не выполнил простейшего преобразования английских единиц измерения в метрическую систему. Из-за фатальной ошибки аппарат стоимостью 125 миллионов долларов оказался слишком близко к поверхности Марса. Диспетчеры пришли к выводу, что спутник на большой скорости вошел в марсианскую атмосферу, где из-за возникших перегрузок его системы связи вышли из строя. Неуправляемый Mars Climate Orbiter попал на околосолнечную орбиту, миссия была провалена.

На новейшей французской беспилотной ракете-носителе «Ariane 5» решили использовать то же программное обеспечение, которое было разработано для более ранней модели — Ariane 4. К сожалению, более мощный двигатель Ariane 5 спровоцировал баг, не встречавшийся в предыдущих версиях ПО. Через тридцать шесть секунд после первого запуска ракеты пришлось активировать систему самоуничтожения, так как возникла целая череда программных ошибок. В сущности, программа попыталась записать 64-разрядное число в 16-разрядное пространство. Возникло переполнение, в результате которого отказал и основной, и резервный компьютер (поскольку на обоих компьютерах выполнялись одни и те же программы). На разработку Ariane 5 было потрачено около 8 миллиардов долларов. Общая стоимость спутников, которые должна была вывести на орбиту эта ракета, составляла 500 миллионов долларов. В следующем ролике мы видим ошеломленного инженера, наблюдающего взрыв ракеты. Затем специалист записывает на бумажке какое-то короткое слово — F…A…I…L , вероятно.

В 2004 году компания EDS разработала сложную компьютерную систему по выплате пособий для британского агентства помощи детям (CSA). В то же время Министерство труда и пенсионного обеспечения (DWP) приняло решение реорганизовать это агентство. Две программные системы оказались полностью несовместимы, в результате были спровоцированы необратимые ошибки. Система переплатила 1,9 миллионам человек и недоплатила семистам тысячам. В итоге накопилось 7 миллиардов долларов, не попавших на социальные счета, 239 000 нерассмотренных дел, 36 000 новых дел, «застрявших» в системе. Все эти ошибки обошлись британским налогоплательщикам в сумму более 1 миллиарда долларов.

Советская газотранспортная система была настолько сложной, что управлять ею можно было лишь с помощью продвинутого автоматизированного ПО. Которого в стране, конечно, не было. В ЦРУ узнали, что советские агенты собираются украсть планы подобной системы, и вышли на контакт с канадской компанией, разрабатывавшей ПО такого рода. Сотрудникам компании было поручено специально внести в код определённые ошибки, чтобы СССР получил дефектную программу. В июне 1982 года на участке газопровода произошел мощный взрыв, который, по некоторым данным, был крупнейшим неядерным взрывом в истории планеты.

Незадолго до открытия пятого терминала в аэропорту Хитроу персонал тестировал новейшую систему для транспортировки больших объемов багажа, поступающего в аэропорт ежедневно. Перед открытием терминала она была тщательно протестирована на 12 000 пробных «единицах» багажа. Все испытания прошли безупречно, но в день открытия терминала оказалась, что система неработоспособна. Вероятно, причиной тому стали непредусмотренные практические ситуации. Например, пассажир мог забыть в сумке какой-то важный предмет, и багаж вручную забирали из транспортной системы. Весь процесс обработки нарушался, и система отказывала. В течение следующих десяти дней около 42 000 мест багажа не были доставлены владельцам, из-за этого пришлось отменить более 500 рейсов.

В 1962 году космический корабль «Mariner 1» должен был отправиться к Венере. Однако едва ракета успела оторваться от космодрома на мысе Канаверал, как угрожающе отклонилась от курса. Возникла угроза падения на землю. Инженеры NASA, управлявшие полетом с Земли, активировали систему самоуничтожения ракеты. Позже ревизионная комиссия пришла к выводу: авария возникла из-за того, что в программных инструкциях был пропущен дефис. В результате корабль получал неверные управляющие сигналы. Стоимость ракеты составляла 18 миллионов долларов без учёта инфляции.

Червь Морриса — под таким названием стала известна программа, разработанная в 1988 году аспирантом Корнеллского университета Робертом Тэппеном Моррисом. Автор утверждал, что задумал его как «безобидный эксперимент», но из-за ошибки в коде она вышла из-под контроля и начала стремительно распространяться, выводя из строя тысячи компьютеров.  Общая стоимость устранения ущерба составила около 100 миллионов долларов. Роберта Морриса обвинили в компьютерном преступлении и оштрафовали на 10 000 долларов. На суде адвокат заявил, что созданная подзащитным программа помогла усовершенствовать компьютерную безопасность. Стоит отметить, что Моррис был сооснователем инкубатора стартапов Y Combinator, а в настоящее время является адъюнкт-профессором Массачусетского технологического института. Дискета с исходным кодом червя Морриса хранится в Бостонском университете.

В феврале 1991 года американский комплекс противоракетной обороны «Patriot», установленный в Саудовской Аравии, пропустил ракетный удар по армейским казармам. Правительственная комиссия обнаружила, что это произошло из-за программного сбоя, который привел к «неточности в процедуре отслеживания, усугубившейся в ходе долговременной эксплуатации системы». К моменту катастрофической ошибки комплекс «Patriot» беспрерывно проработал в течение более 100 часов. Накопилась достаточно серьезная погрешность, в результате которой комплекс ПВО неправильно вычислил курс атакующей ракеты. В результате прямого попадания погибли 28 американских солдат. Ещё до инцидента американские инженеры успели исправить в программе баг, из-за которого в работе «Patriot» возникали неточности. Исправленная версия ПО была доставлена на пострадавшую военную базу на следующий день после атаки.

В 1994 году профессор математики обнаружил баг в популярном процессоре Intel от Pentium и опубликовал об этом статью. Компания Intel в ответ на это замечание заявила, что готова заменять процессоры по требованию пользователей, которые смогли бы доказать, что пострадали в результате этой ошибки. По расчетам Intel, вероятность её возникновения была столь низкой, что подавляющее большинство пользователей даже не заметили бы её. Возмущённые клиенты потребовали заменить процессоры всем желающим, и Intel пришлось на это пойти. Финансовые потери Intel в результате составили около 475 миллионов долларов. 

Компания Knight, один из ключевых игроков американского фондового рынка, едва не обанкротилась в результате одной программной ошибки. Из-за возникшего бага компания всего за полчаса потеряла около 440 миллионов долларов. В течение 2 дней, когда неисправное ПО наводнило рынок незапланированными сделками, котировки акций компании упали на 75 процентов. Предполагается, что содержавший ошибку биржевой алгоритм Knight стал совершать незапланированные сделки примерно на 150 торговых площадках, просто парализовав их. 

Список был бы неполным без упоминания о спутнике NOAA-19 — ещё одной аварии, которая, правда, не связана с программными ошибками. 6 сентября 2003 года в ходе сборки на заводе Lockheed Martin Space Systems был сильно поврежден спутник. Аппарат рухнул на пол, когда техники устанавливали его в горизонтальное положение. Расследование этого происшествия показало, что случившееся было вызвано плохой производственной дисциплиной. Как оказалось, из тележки, которую использовали в этой процедуре, ранее техник извлёк 24 болта, закреплявших переходную платформу, но не задокументировал этого. Рабочие, которые воспользовались этой тележкой при изменении положения спутника, не проверили болты, хотя обязаны были это сделать. Стоимость ремонта спутника составила 135 миллионов долларов.

Источник: raygun.io

Clean Whale дарит купон на уборку — 15% в 9 городах

В истории программирования не всегда все было легко и безоблачно. Ведь любому программисту, вне зависимости от опыта и технического бэкграунда, трудно уберечься от ошибок и порой даже небольшого количества плохого кода хватало, чтобы вызвать серьезную проблему. «Библиотека программиста» немного полистала ИТ-летописи и нашла для вас 10 самых худших ошибок в истории кодинга. Поехали!

1. Ошибка 2000 года

⚠️💻 10 самых известных ошибок в коде в истории программирования

Более двух десятилетий назад, в канун нового 2000 года, весь развитый мир охватила паника из-за проблемы способной привести к сбоям в работе компьютеров, падению самолетов, прекращению работы медицинского оборудования и разрушению глобальной финансовой системы.

Суть проблемы заключалась в том, что большинство устаревших информационных систем, созданных еще в 70-х и 80-х, использовали только две цифры для исчисления года. Это значит, что часы внутри микропроцессоров различного аппаратного ПО регистрировали 1999 год как «99», основываясь на ошибочном предположении разработчиков прошлого, что мы всегда будем жить в 20-м веке и цифра «19» в обозначении года никогда не изменится.

Тогда все полагали, что в 2000 году у всех нас наверняка будут реактивные ранцы, еда в форме таблеток, футуристическая серебристая униформа и человечество к этому времени откажется от старых компьютерных систем середины века. Но чуда не случилось!

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

2. Терак-25

⚠️💻 10 самых известных ошибок в коде в истории программирования

Плохой код на самом деле может убить. Такая катастрофа произошла с аппаратом лучевой терапии Therac-25, произведенным компанией Atomic Energy of Canada, ставшего причиной гибели не менее шести пациентов. Расследование выявило недоработку системы, вызвавшую передозировку радиацией. Связано это было с трудностью проведения автоматизированных тестов такого специфического программного обеспечения. И поэтому машина, призванная помочь людям, стала машиной для убийств из научной фантастики. Этот случай заставил разработчиков ПО медицинской отрасли крайне ответственно подходить к тестированию такого оборудования.

3. Сеть AT&T выходит из строя

⚠️💻 10 самых известных ошибок в коде в истории программирования

15 января 1990 года около 50 процентов мобильной сети AT&T вышло из строя. За девять часов простоя более 75 миллионов звонков остались без ответа. И хотя в первоначальных отчетах следствия по этому делу значилось хакерская атака, на самом деле, виновником сего происшествия стало стандартное обновление ПО. Ошибка всего в одной строке кода стоила компании огромных денег. Все организации, целиком зависящие от наличия и качества связи, выставили AT&T иски с внушительными суммами. К примеру, крупнейший авиаперевозчик American Airlines, понес колоссальные финансовые убытки из-за того, что получил наполовину меньше звонков своих клиентов из-за сбоя. Авария 1990 года до сих пор служит прекрасным примером важности тестирования программного обеспечения и служит напоминанием о неразрывной связи между технологиями и экономической деятельностью большинства компаний.

4. Досрочное освобождение заключенных

⚠️💻 10 самых известных ошибок в коде в истории программирования

В 2005 году в США штате Мичиган произошел сбой тюремной программы, отвечающей за расчет срока наказания заключенных, в результате чего более 20 заключенных досрочно вышли на свободу. Программа ошибочно посчитала смягчающий коэффициент и снизила срок пребывания отбывающих наказание людей в несколько раз. Ошибку в коде заметили не сразу, а лишь по прошествии некоторого времени. И поэтому меру пресечения счастливчикам никто не пересчитывал. Среди них, к слову, не было матерых гангстеров и маньяков. В основном это были мелкие правонарушители, отбывавшие срок за неуплату алиментов, махинации с налогами и незаконное хранение психотропов.

Произошедшее показывает, что в погоне за автоматизацией процессов и сокращением количества ручных операций программисты зачастую забывают о грамотной настройке разработанной системы и ее тестировании. А мы с вами в очередной раз убеждаемся, что даже незначительная ошибка может привести к серьезным последствиям.

5. Взрыв Ariane 5

⚠️💻 10 самых известных ошибок в коде в истории программирования

Случай произошел 4 июня 1996 года при первом запуске Ariane 5 — одной из самых надежных беспилотных ракетных установок, целью которой было изучение взаимодействия между солнечным ветром и магнитосферой Земли. Через 37 секунд после старта ракета, вылетевшая с космодрома, находящегося на берегах Французской Гвианы, развернулась на 90 градусов и всего через несколько секунд превратилась в огромный огненный шар.

Специальная группа прочесала место происшествия, собирая обломки, чтобы попытаться выяснить, что произошло. Через некоторое время техническая комиссия установила, что авария была вызвана программным сбоем.

Отказ системы произошел из-за полной потери информации о точности наведения ракеты и ориентации ее в пространстве, поступающей в центральный процессор. Потеря — следствие ошибки проектировщиков ПО и вызвана она была некорректным преобразованием 64-битного числа с плавающей запятой в 16-битное целое число.

К слову, целочисленное переполнение является широко распространенной ошибкой в ​​​​компьютерном программировании.

6. Ошибка Paypal

⚠️💻 10 самых известных ошибок в коде в истории программирования

Что бы вы сделали, если бы PayPal случайно зачислил на ваш счет 92 квадриллиона долларов? Крису Рейнольдсу, 56-летнему американцу, продающему автозапчасти на eBay, не пришлось долго об этом думать. Ведь он даже не успел ощутить себя первым в мире квадриллионером и самым богатым человеком в мире, так как ошибка была устранена в течение нескольких минут. Поэтому, прежде чем мужчина начал мечтать о новом кадиллаке и золотой карте члена королевского яхт-клуба, сумма на его счету вернулась к привычному балансу. Конечно, стоило бы потребовать с компании хотя бы часть этой суммы за моральный ущерб, но, видимо, шок от увиденного не позволил ему сделать это.

7. Калькулятор Windows

⚠️💻 10 самых известных ошибок в коде в истории программирования

Эта ошибка, существующая в большинстве версий Windows (кроме Windows 10), которую вы сможете проверить самостоятельно.

Для этого нужно:

  1. Открыть калькулятор Windows и ввести 4.
  2. Извлечь из этого числа квадратный корень и получите 2.
  3. Вычесть из него 2 и вместо нулевого результата в разных версиях Windows вы увидите разные результаты.

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

Microsoft признала эту ошибку в приложении калькулятора и исправила ее в Windows 10.

8. Проблема 2038 года

⚠️💻 10 самых известных ошибок в коде в истории программирования

Ошибка 2038 будет вызвана использованием 32-разрядных процессоров в 32-разрядных системах. Проще говоря, 19 января 2038 года наступит в 03:14:07. Компьютеры, которые все еще используют 32-разрядные системы для управления датой и временем, не смогут справиться с этим изменением. Как и в случае с ошибкой 2000 года, компьютеры не смогут отличить 2038 год от 1970 года.

Однако волноваться не стоит: почти все современные процессоры в настольных ПК имеют 64-битные системы с 64-битным программным обеспечением и в 2038 году само существование 32-битных систем будет под вопросом.

9. Видео Gangnam Style «сломало» YouTube

⚠️💻 10 самых известных ошибок в коде в истории программирования

Счетчик YouTube ранее использовал 32-битное целое число для определения максимального количества просмотров видеоролика, и равно оно было 2 147 483 647.

Однако корейская поп-группа PSY, выложившая на сервис свой клип с зажигательной песней Gangnam Style благополучно его сломала, превысив допустимую планку.

«Когда мы его делали, никогда не думали, что какое-нибудь видео посмотрят столько раз, но это было до Gangman Style», — написал на своей странице в сети один из разработчиков портала.

Клип PSY опубликовали 15 июля 2012 года и к концу мая 2014 года он стал единственным видеороликом, которой просмотрели больше 2 млрд раз.

В настоящее время YouTube использует 64-битное целое число для счетчика видео, что означает, что максимальное количество просмотров видео составляет 9,22 квинтиллиона.

10. Синий экран смерти

⚠️💻 10 самых известных ошибок в коде в истории программирования

BSOD или «Синий экран смерти» — жаргонное название фатальной системной ошибки Windows, показывающей системный сбой, при котором операционка достигала состояния, в котором она больше не могла надежно работать. Как правило, вызывалась она в Windows 95-98 после неожиданного завершения важного процесса или общего сбоя оборудования. Старожилы наверняка помнят этот баг, который довольно часто возникал на заре становления ИТ-культуры.

16 марта 2000 года Microsoft выпустила обновление для системы безопасности, устраняющее эту неполадку, однако и сейчас на форумах изредка можно встретить сообщение от пользователей об этой проблеме.

***

Людям свойственно совершать ошибки. Однако, будьте внимательны — всегда нужно помнить, что даже одна плохо написанная строчка кода может привести к печальным последствиям. Удачи!

Материалы по теме

  • ⚠️ 10 самых распространенных ошибок, ежедневно допускаемых каждым программистом
  • ⚠️ Как не нужно учить TypeScript: 5 распространенных ошибок
  • 😢 Дорогостоящие ошибки: почему нам пришлось отказаться от Firebase

#подборки


  • 0

Иногда ошибки в программах стоят миллионов долларов и даже уносят жизни людей. Расскажем о самых дорогих багах в истории IT.

Иллюстрация: Meery Mary для Skillbox Media

Антон Сёмин

Пишет об истории IT, разработке и советской кибернетике. Знает Python, JavaScript и немного C++, но предпочитает писать на русском.

Закон Мёрфи гласит: если что-то может пойти не так, это обязательно произойдёт. Яркий пример — фильм Стэнли Кубрика «2001: Космическая одиссея». По сюжету военные зашили в бортовой компьютер HAL 9000 жёсткую инструкцию, которая должна была скрывать от астронавтов истинные цели экспедиции. В результате искусственный интеллект перебил почти всех членов команды и сорвал операцию.

Но такие сюжеты встречаются не только в кино — в реальности дорогие компьютеры не раз сходили с ума и даже убивали людей. Расскажем о самых громких ошибках в ПО.

Этот баг изрядно потрепал нервы владельцам яблочных смартфонов, хотя всё закончилось хорошо и устройства удалось восстановить.

В 2016 году резвые пользователи reddit.com пронюхали фичу: если в 64-битной версии iOS установить время на 00:00:00 часов 1 января 1970 года, а потом перезагрузить смартфон, он больше не включится. Устройство буквально превращалось в кирпич: пользователь видел только логотип Apple, а повторная перезагрузка не помогала.

Шутка разлетелась по интернету, и даже незнакомые с Reddit пользователи стали экспериментировать. Кто-то разыгрывал знакомых владельцев айфонов и айпадов.

Во «ВКонтакте» и на форумах моментально появились «добрые» розыгрыши:

Подписчики «Двача» и МДК одними из первых в России протестировали «новую фичу» :) Скриншот: МДК

Опытным путём всё-таки удалось восстановить смартфоны: надо было подождать, пока они полностью разрядятся, или отключить аккумулятор вручную. После этого система запускалась с заводскими настройками.

Причина «окирпичивания» яблочной техники — UNIX-время и некачественное тестирование. Время в iOS отсчитывается от 1 января 1970 года — это условный ноль в UNIX-подобных системах.

В зависимости от часового пояса устройства добавляют смещение — прибавляют или отнимают необходимое количество часов. По одной из версий, когда пользователи из регионов с отрицательным смещением устанавливали злосчастную дату, время «уходило в минус». Например, в Нью-Йорке iPhone показывал бы −4 часа.

В итоге iOS не понимал, что делать с отрицательным временем, а инструкции, которые используют время, выкидывали белый флаг и просто-напросто ломались.

Но этой версии противоречат несколько фактов:

  1. На баг жаловались и в регионах с положительным смещением времени.
  2. Проблема вскрылась только на 64-битной версии.
  3. Неужели разработчики Apple могли не поставить элементарную проверку на отрицательные значения? WTF?!

По другой версии, операционная система «подавилась» слишком большим числом. Главная программа использует переменную времени при настройке окружения и действительно вычитает из неё какие-то константы.

И когда пользователи устанавливают время в ноль, оно не попадает в отрицательный диапазон, а становится равным 18 446 744 073 709 551 616 — это максимальное целое положительное число в 64-битной операционной системе.

В индекс Доу Джонса заложена стоимость акций 30 самых больших американских компаний — например, Apple, Coca-Cola и Intel. Ещё есть индекс S&P 500 — в него входит 505 компаний. По этим показателям оценивают «здоровье» экономики США: индексы «зеленеют» — экономика растёт, «краснеют» — экономика падает.

В октябре 1987 года индекс Доу Джонса упал на 22,6%, а S&P 500 — на 20,5%. Это вызвало эффект лавины на мировом фондовом рынке. Вслед за США обвалились Гонконг (на 46%), Австралия (на 42%), Канада (на 23%) и другие развитые экономики. Событие стало финансовой трагедией, а вину опять повесили на разработчиков.

Так выглядит чёрный понедельник инвестора. Скриншот: Ycharts

Эксперты всё ещё спорят об истинных причинах падения, но, по официальной версии, к кризису привела ошибка программного трейдинга. Специальная программа автоматически заключала сделки, чтобы инвесторам не приходилось постоянно следить за котировками и проводить все операции вручную. Машины ориентировались на движение рынка: индексы растут — закупаем, падают — продаём. Алгоритмами пользовались только крупные инвесторы вроде пенсионных фондов и центральных банков, поэтому объёмы программного трейдинга были велики.

Когда рынок немного качнуло, машины одновременно стали продавать акции на миллионы долларов. Но покупать их было некому, а потому программа ещё больше снижала цену. Случилось настоящее восстание машин: за один день американский рынок акций потерял около 500 млрд долларов. Вслед за американцами паника перекинулась и на другие страны — их экономики тоже просели на десятки процентов.

«Чёрный понедельник» ударил по развитым экономикам даже сильнее Великой депрессии. Зато государства и финансовые организации разработали правила для защиты частных инвесторов. Теперь биржи прекращают торги при падении S&P 500 на 7%, 13% и 20%, чтобы дать инвесторам принять взвешенное решение.

P. S. Объяснения рыночных воротил звучат красиво и убедительно, но мы-то с вами знаем, что на самом деле виноваты не разработчики, а рептилоиды с иллюминатами :)

Хотя финансовые игроки многому научились в 1987 году, история с «взбесившейся» программой повторилась спустя 25 лет.

Knight Capital была одной из крупнейших финансовых компаний в мире — с её помощью на фондовом рынке торговали страховщики, пенсионные фонды и банки. Через компанию проходила каждая шестая ценная бумага с бирж NYSE и NASDAQ. К тому же Knight Capital торговала собственными акциями и неплохо росла из года в год.

В начале 2010-х стала популярной высокочастотная торговля с помощью роботов. Они совершали сотни и тысячи сделок в секунду по заранее составленному алгоритму и помогали неплохо зарабатывать на минимальных скачках цены. Человек просто физически не мог выставлять столько ордеров в такие короткие сроки.

В 2012 году Knight Capital запустила своего робота — и сразу же всё пошло наперекосяк. Из-за ошибки в коде алгоритм за сорок минут умудрился провести более 2 млн сделок — а это недельная норма для рынка. Менеджеры компании смотрели и ничего не могли сделать: у программы просто не было «выключателя».

Кадр: фильм «Предел Риска»

За сорок минут робот успел потратить полмиллиарда долларов. Правда, из них только 365 млн принадлежало Knight Capital, а остальные деньги были заёмными. Вы удивитесь, но банки и фонды скинулись и спасли компанию от банкротства. Паники на фондовом рынке тоже не случилось — помогли защитные механизмы, которые придумали после «чёрного понедельника».

Первый полёт самой надёжной европейской ракеты Ariane 5 был неудачным. Гордость космической программы взорвалась через 40 секунд после старта из-за ошибки в управляющей программе. Этот баг признан самым дорогим в истории.

В течение 10 лет 10 стран Евросоюза потратили на проект 7 млрд долларов, половину из которых дала Франция. Ракета должна была вывести на геостационарную орбиту спутники для изучения магнитного поля Земли.

4 июня 1996 года миллионы европейцев в прямом эфире наблюдали, как в небе буквально сгорают их налоги. На высоте 4 тысяч метров Ariane 5 отклонился от прямой траектории и самоуничтожился. Оказывается, разработчики скопировали код из управляющей программы предыдущей модели ракеты, которая успешно взлетала больше сотни раз. Только они не учли, что Ariane 4 летел по другой траектории и с другой горизонтальной скоростью.

Фрагмент кода ракеты с ошибкой. Скриншот: moscova — Inria

Скопированный программный модуль неверно прочитал ситуацию и преобразовал 64-битное значение в 16-битное безо всякой проверки. Да, программа перехватила исключение — а вот отреагировала на него неадекватно и отправила на бортовой компьютер сигнал аварийного завершения. При этом с технической точки зрения полёт был абсолютно нормальным.

Евросоюз потерял год исследований и более 500 млн долларов. После аварии страны-участники провели открытое расследование и нашли все «золотые» баги. А спутники быстренько отправили в космос на российском «Союзе». Злополучный код для Ariane переписали на Ada, и ракета успешно стартовала в 1997 году.

Иногда баги приводят к смерти. В Национальном институте рака в Панаме из-за компьютерной ошибки погибли восемь человек и как минимум двадцать получили лучевую болезнь.

Врачи управляли камерой для облучения с помощью специальной программы: устанавливали дозу радиации, длительность терапии и положение четырёх защитных плит, которые укрывали здоровые ткани пациентов. Радиолог попросил добавить пятую плиту для дополнительной защиты, но программа разрешала ставить не больше четырёх. Тогда операторы придумали хитрость: фактически установить две плиты, а программе показать, что она всего лишь одна.

Позже выяснилось, что программа рассчитывала длительность терапии исходя из количества защитных блоков. Она позволяла вводить параметры, но итоговое время устанавливала сама. Поэтому после изменения настроек пациенты облучались в два раза дольше и у всех появились признаки лучевой болезни. Правда, врачи ещё несколько месяцев не обращали внимания на жалобы.

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

Идеальных программ не бывает, и все сценарии предугадать невозможно. Хакеры каждый день находят уязвимости в приложениях и устройствах, «ломают» небезопасные сайты. Но ошибки можно свести к минимуму, если правильно тестировать приложения и не вносить в них правки или «рацпредложения» по своему усмотрению, без попытки проверить последствия.


Как зарабатывать больше с помощью нейросетей?
Бесплатный вебинар: 15 экспертов, 7 топ-нейросетей. Научитесь использовать ИИ в своей работе и увеличьте доход.

Узнать больше

Понравилась статья? Поделить с друзьями:
  • Самая грубейшая ошибка как правильно
  • Самая высочайшая гора лексическая ошибка
  • Самая грубейшая ошибка или самая грубая ошибка
  • Самая главная ошибка человечества
  • Самая главная ошибка путина