Баг (bug) в переводе с английского означает насекомое и является жаргонным словом, которое обозначает ошибку в программе. Данный термин употребляется обычно в отношении ошибок, которые выявляются в процессе работы программы, в отличие от ошибок синтактических или возникших в результате проектирования. Локализуются и устраняются баги в процессе отладки и тестирования программы.

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

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


В 1962 г. по направлению к Венере стартовал космический аппарат Mariner I. Из-за произошедшей поломки антенны, с земными службами управления связь корабль потерял и перешел на собственное пилотирование. В этой системе пилотирования присутствовал меленький баг, из-за которого корабль выбрал курс совсем в другом направлении, поэтому его пришлось взорвать над водами Атлантического океана. Потом установили ошибку – пропущен был при вводе одной из формул один символ.
В 1982 г. на Транссибирском трубопроводе произошла авария. В канадское программное обеспечение, которое управляло газовыми трубопроводами, оперативниками ЦРУ был внедрен баг. Это ПО советская разведка получила в качестве объекта промышленного шпионажа, которое и было применено на Транссибирском трубопроводе. Это вызвало в истории человечества самый большой неядерный взрыв.
В 1985-1987 гг. во время сеансов радиационной терапии с применением медицинского ускорителя Therac-25, несколько человек получили смертельную дозу облучения. Therac-25 генерировал два вида излучения: нормальное рентгеновское и слабое бета-излучение. Вместо электромеханической защиты в устройстве стояла программная, которая считалась более надежной защитой пациента от облучения. Новые функции некорректно были реализованы программистом, что привело к смерти минимум пяти человек и к большому числу несмертельного переоблучения.
В 1988 г. в Berkeley Unix произошло переполнение буфера. Это первый компьютерный червь, заразивший от двух до шести тысяч компьютеров в течение суток.
На протяжении 1988-1996 гг. генератор случайных чисел Kerberos на протяжении длительного периода имел широкое применение в большинстве тогдашних систем шифрования. Как изначально предполагалось, система должна была из миллиардов чисел случайным образом выбирать ключ, однако генератор выбирал ключ из миллиона. В результате этого, на протяжении восьми лет в компьютерную систему без труда мог проникнуть любой пользователь.
В январе 1990 г. произошло падение AT&T – телефонной сети. Причина — ошибка, возникшая в прошивке междугородних коммутаторов, вследствие которой коммутатор начал перезагружаться при получении от соседнего коммутатора специфического сигнала. Основная беда заключалась в том, что такой сигнал сразу поступал после восстановления работы коммутатора после сбоя, в результате чего более 60 000 человек на 9 часов остались без междугородней связи, пока инженеры не восстановили нормальную программу прошивки.
В 1993 году хорошо известный процессор Intel Pentium допускал погрешности на 0,006% из — за бага при делении с плавающей запятой. Данная проблема коснулась не всех пользователей, однако для имиджа компании Intel это стало настоящим ударом и обошелся этот баг компании в пределах $475 миллионов, долларов разумеется, а не монгольских тугриков.
В 1996 году ракета-носитель Ariane 5, которая являлась результатом длительной работы европейских ученых, после своего старта взорвалась через 40 секунд. Научное оборудование, находящееся на борту ракеты оценивалось в $500 миллионов, не включая побочных финансовых потерей. В результате цепочки ошибок, которые произошли в двух процессорах, управляющих ракетой, сработала система автоподрыва. Это произошло вследствие переполнения буфера, и система навигации задала недопустимое значение горизонтальной скорости.
Все эти примеры показывают, что компьютерам доверять в полной мере нельзя. Для компьютеров программы создаются людьми, которым все же свойственно ошибаться.