14.06.2025 15:10

5 багов, которые чуть не уничтожили всё

1. Ariane 5 (1996) — Европейская ракета взорвалась через 37 секунд после старта из-за попытки перевести число с плавающей точкой в 16-битное целое. Программу просто скопировали с предыдущей модели ракеты, не адаптировав к новой. Цена — 370 миллионов долларов. Вывод: код не бывает универсальным, даже если очень хочется.

2. Mariner 1 (1962) — NASA потеряло космический зонд из-за пропущенного дефиса в формуле, которую переписали вручную из технической документации. Без дефиса формула велела зондовой навигации “паниковать”, и зонд был сбит на 293-й секунде полёта. Один дефис стоил $18 миллионов. Вывод: баг может быть не в коде, а в исходнике кода.

3. Therac-25 (1985–1987) — медицинский ускоритель облучал пациентов огромной дозой радиации из-за гонки потоков и отсутствия аппаратной защиты. Устройство не выдавало ошибок — оно думало, что всё в порядке. Погибли минимум шесть человек. Вывод: доверять только софту — опасно. Особенно, если он отвечает за жизнь.

4. Knight Capital (2012) — торговый алгоритм, в котором забыли отключить старый модуль, за 45 минут совершил тысячи сделок и уничтожил $1,2 млрд. Компания выжила только благодаря экстренному слиянию. Вывод: техдолг любит возвращаться в самый неожиданный момент — особенно в проде.

5. Y2K (2000) — баг, которого все ждали, но никто толком не понял. Старые системы записывали год как две цифры (99 вместо 1999), и наступление 00 воспринималось как 1900. Боялись коллапса всего — от банков до электростанций. Итог: катастрофы не случилось, но миллиарды были потрачены на экстренное исправление. Вывод: даже “мелкая оптимизация памяти” может стать бомбой через 30 лет.