🔍 КАК ЭТО УСТРОЕНО

Что такое баг и откуда пошло это слово

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

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

Что вообще такое баг

Баг (от английского bug — «жук», «насекомое») — это ошибка в программе, из-за которой она работает не так, как задумано. Компьютер при этом не ломается и не «глупеет»: он честно выполняет ровно те инструкции, которые ему дали. Проблема в том, что в этих инструкциях человек что-то напутал.

Важно понять одну вещь: компьютер всегда делает именно то, что ты написал, а не то, что ты имел в виду. Если игра роняет героя сквозь пол, значит, в коде где-то сказано примерно так: «проверяй столкновение с полом каждые полсекунды» — а герой за эти полсекунды успевает провалиться. Машина не ошиблась. Ошибся тот, кто задал правило.

Баг — это не каприз компьютера. Это маленькая логическая дырка, которую оставил человек, а машина честно в неё провалилась.

Жук, который остановил машину

Теперь — про настоящего жука. История случилась 9 сентября 1947 года в Гарвардском университете. Инженеры работали с огромным электромеханическим компьютером Harvard Mark II — это был шкаф размером с комнату, набитый реле, проводами и переключателями. В какой-то момент машина начала выдавать неправильные результаты.

Инженеры полезли искать причину и обнаружили внутри одного из реле застрявшего мотылька. Насекомое попало между контактами и мешало им замыкаться. Его аккуратно вытащили, приклеили скотчем в рабочий журнал и подписали: «First actual case of bug being found» — «Первый реальный случай обнаружения жука». Этот журнал с приклеенным мотыльком сохранился до наших дней и хранится в музее.

Среди инженеров той команды была Грейс Хоппер — выдающаяся программистка и офицер американского флота, одна из легенд раннего программирования. Именно благодаря ей эта история стала знаменитой, и многие думают, что слово «баг» придумала она.

А вот это уже миф

На самом деле слово bug в значении «техническая неполадка» появилось задолго до того мотылька. Им пользовались инженеры ещё в XIX веке. Например, Томас Эдисон в письме 1878 года жаловался, что в его изобретениях постоянно вылезают «баги» — мелкие неполадки, которые приходится выискивать и устранять.

То есть к 1947 году слово уже было обычным жаргоном у инженеров. Так в чём же фишка истории с мотыльком? А в том, что это был первый случай, когда багом оказался буквально настоящий жук. Отсюда и шутливая подпись в журнале: «реальный случай». Инженеры оценили совпадение — техническое словечко вдруг материализовалось в виде живого насекомого.

  • Слово «баг» как «неполадка» — старше компьютеров, ему уже больше 140 лет.
  • Мотылёк 1947 года — не источник слова, а забавное совпадение, которое прославило термин.
  • «Дебаггинг» (debugging) — поиск и устранение багов — вырос из той же метафоры: «выловить жуков».

Почему баги неизбежны

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

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

Поэтому программисты не столько мечтают писать код вообще без багов, сколько учатся быстро их находить и чинить. Для этого придумали тесты (программы, которые проверяют другие программы), отладчики (инструменты, позволяющие заглянуть внутрь работающего кода) и code review — когда твой код читает коллега и замечает то, что ты прозевал.

Так что в следующий раз, когда игра подвиснет, а приложение выдаст что-то странное, ты будешь знать: это не злой дух в машине. Это всего лишь маленький «жук» — логическая дырочка, оставленная человеком. И где-то прямо сейчас другой человек его ловит, чтобы починить. А началось всё с мотылька, приклеенного скотчем в старом рабочем журнале.

#баг#история программирования#как это устроено#отладка#ошибки
Понравилась статья?
В Telegram-канале — лучшее из журнала и анонсы новых учебников.