Баг (инженерия)



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

Термин «баг» не является техническим; более формальные понятия, помимо «дефект», включают ошибка, изъян и сбой. Баг может быть постоянным, спорадическим, периодическим или преходящим; в области вычислений к багам относят сбои, зависания, а также глитчи.

Поскольку желательность результата субъективна, то, что один считает багом, для другого может быть особенностью — отсюда известная в среде разработчиков шуточная реплика, возникающая в ответ на сообщение о баге: «Это не баг, это фича».

undefined

История

Английское средневековое слово англ. bugge является источником терминов англ. bugbear и англ. bugaboo, используемых для обозначения чудовищ[1].

Термин «баг» для обозначения дефекта использовался в инженерном жаргоне как минимум с 1870-х годов, задолго до появления электронных вычислительных машин. Например, Томас Эдисон писал своему коллеге в 1878 году:

Так было со всеми моими изобретениями. Первый шаг — это интуиция и порыв, затем возникают трудности — что-то выходит из строя, и именно тогда «баги» — так называют разные мелкие неисправности и затруднения — проявляют себя, а для достижения коммерческого успеха или неудачи требуется много месяцев напряжённого наблюдения, изучения и работы[2].

В комиксе на страницах телефонного промышленного журнала 1924 года наивный персонаж слышит, что некий мужчина работает «охотником на багов», и преподносит ему скребок для спины. Мужчина отвечает: «Разве не знаешь, что „охотник на багов“ — это всего лишь прозвище ремонтника?»[3]

Первая механическая пинбол-игра, Baffle Ball, в 1931 году рекламировалась как «свободная от багов»[4].

Проблемы с военной техникой во время Второй мировой войны также называли багами или глитчами[5].

В фильме 1940 года Flight Command дефект в работе навигационного прибора был назван «багом».

В книге 1942 года американская писательница Луиза Дикинсон Рич, говоря о механизированной машине для распиливания льда, использовала выражение: «Ледопилили прекратились, пока создателя не привели устранить баги из его детища»[6].

Айзек Азимов использовал термин «баг» для описания проблем с роботом в рассказе «Catch That Rabbit», опубликованном в 1944 году.

undefined

Контр-адмирал ВМС США Грейс Хоппер, одна из пионеров компьютерной техники, популяризировала историю о моли, вызвавшей дефект в раннем электромеханическом компьютере[7]. Около 1947 года, когда Хоппер работала с машинами Mark II и Mark III в Гарварде, операторы локализовали ошибку в Mark II, вызванную молью, застрявшей в реле. Моль была удалена и наклеена в рабочий журнал с подписью: «Первый реальный случай обнаружения бага». Считается, что операторы, включая Уильяма «Билла» Бёрка из Naval Weapons Laboratory в Далгрен, Виргиния[8], были знакомы с инженерным значением слова и, вероятно, с юмором обыграли совпадение его употребления как для живого вещества, так и технологического дефекта. Эта история, пусть и шутка, показывает регулярность термина среди компьютерщиков того времени[9].[10][11][12] Тот самый журнал с приклеенной молью хранится в коллекции Смитсоновского Национального музея американской истории[11].

Связанный с этим термин debug также появился раньше, чем его использование в информатике: согласно этимологии Oxford English Dictionary, самое раннее использование слова в значении устранения неисправностей зафиксировано в авиационной сфере в 1945 году[13].

«Это не баг, это фича»

Поскольку баг подразумевает нежелательное поведение, то констатация наличия бага субъективна. То, что одни считают багом, другие могут воспринимать как полезную особенность, отсюда и распространённая фраза: «Это не баг, это фича» (INABIAF)[14]. Эта шутка была задокументирована в The Jargon File (1975), однако восходит как минимум к 1971 году, когда программист Сандра Ли Харрис из Digital Equipment Corporation (DEC), работая над интерпретатором языка FOCAL для PDP-8, различала проблемы, требующие исправления в коде, и вопросы, которые следовало бы описать в пользовательской документации[15].

О подобном поведении могут специально сообщать пользователям или же оно остаётся недокументированным.

Примечания

Категории