Сколько раз мы слышали это слово!!!
Грани подвисают -
баг, в тебя в очередной раз попал маг/уворот, а ход-то был твой -
баг. Тебе дали/не дали какую-то вещь -
баг. В общем
баг, баг, баг...
Покажите мне человека, который хоть раз не слышал/не употреблял это слово!
По сути его употребляют к месту и не к месту.
Все, что игроку не нравится, становится или злой козней админа или
багом. И то и другое вполне подходит для оправдания собственных действий и снимает ответственность с персонажа, да и плюс слово-то какое красивое, дайте-ка я его еще раз употреблю -
БАГ!
Англ.
«bug» имеет несколько значений:
«жучок» (в разных смыслах) и
«ошибка в программе» (компьютерный сленг)
Существует расхожее мнение, что первый компьютерный
баг был реальным насекомым. Так ли это?
И да и нет.
Начнем с «да». В 1947 году стоявшая в большой аудитории (без кондиционера) Гарвардского университета вычислительная машина ВМФ США «Марк-II» была выведена из строя обычным мотыльком, застрявшим между контактами электромеханического реле. Операторы извлекли расплющенное насекомое, вклеили клейкой лентой в технический журнал с сопроводительной записью и лишь после этого перезапустили ЭВМ.
Механическая природа данной машины делала ее особенно уязвимой для вмешательства насекомых. Большинство первых компьютеров, например ENIAC («Электронный числовой интегратор и вычислитель») при университете Пенсильвании, были уже электронными и использовали специальные вакуумные трубки для защиты от мотыльков.
Но действительно ли термин
«bug» возник после случая в Гарварде?
Ответ: нет.
В значении
«ошибка» или
«сбой» в том или ином механизме слово использовалось еще в XIX веке. «Оксфордский словарь английского языка» цитирует выдержку из газетного сообщения 1889 года, повествующего о том, как Томас Эдисон «не спал две последние ночи, пытаясь отыскать
"баг" в своем фонографе». Словарь Вебстера в издании 1943 года также приводит слово
«bug» в его современном значении.
Невзирая на то, что говорят нам многочисленные веб-сайты и книги, термин
«debugging» (Устранение дефектов (в оборудовании), исправление ошибок, отладка (компьютерной программы) (англ.).) использовали задолго до того, как гарвардский мотылек застопорил ход вещей.
В современном мире это слово имеет уже четкое отношение к компьютерам, ну или как жаргонное в обычном разговоре. Вот, что можно прочитать в ВИКИПЕДИИ:
В программировании
баг (
англ. bug — жук) — жаргонное слово, обычно обозначающее ошибку в программе или системе, которая выдает неожиданный или неправильный результат. Большинство
багов возникают из-за ошибок, сделанных разработчиками программы в её исходном коде, либо в её дизайне. Также некоторые
баги возникают из-за некорректной работы компилятора, вырабатывающего некорректный код. Программу, которая содержит большое число
багов и/или
баги, серьёзно ограничивающие её функционал, называют нестабильной или, на жаргонном языке,
«глючной»,
«глюкнутой», «забагованной», «багнутой» (англ. unstable, buggy).
Термин
«баг» обычно употребляется в отношении ошибок, проявляющих себя на стадии работы программы, в отличие, например, от ошибок проектирования или синтаксических ошибок. Отчет, содержащий информацию о
баге также называют
отчетом об ошибке или о
тчетом о проблеме (англ. bug report). Отчет о критической проблеме (англ. crash), вызывающей аварийное завершение программы, называют крэш репортом (англ. crash report).
Если
баги в программном обеспечении приводят к зависанию компьютера, то это еще мелочи. Гораздо хуже, если из-за ошибок в ПО ломаются автомобили, взрываются ракеты и погибают люди. Вот несколько историй о самых серьезных компьютерных ошибках в истории человечества.
По мере распространения цифровых устройств
баги все глубже проникают в нашу жизнь. Они окружают нас повсюду - на мобильных телефонах, в бытовой технике, в автомобилях. К счастью, обычно
баги не приносят никакого вреда, кроме морального. Но бывает и по-другому, когда
баг вызывает огромные финансовые потери и даже забирает человеческие жизни. Журнал Wired посвятил этой проблеме целую тему номера и опубликовал список 10 худших
багов в истории человечества, в хронологическом порядке.
28 июля 1962 г. Космический аппарат Mariner I стартовал по направлению к Венере. Из-за поломки антенны корабль потерял связь с земными службами управлениями и перешел на собственную систему пилотирования. Но эта система содержала обидный маленький баг. В результате аппарат полетел совсем не в ту сторону и его пришлось подорвать над Атлантическим океаном. Последующее расследование установило, что в процессе программирования системы навигации была совершена маленькая опечатка - при вводе одной из формул был пропущен один символ.
1982 г. Авария на Транссибирском трубопроводе. Оперативники ЦРУ внедрили баг (отчет в формате PDF) в канадское программное обеспечение, управлявшее газовыми трубопроводами. Советская разведка получила это ПО как объект промышленного шпионажа и внедрила на Транссибирском трубопроводе. Результатом стал самый большой неядерный взрыв в истории человечества.
1985-87 гг. Несколько человек получили смертельную дозу облучения во время сеансов радиационной терапии с медицинским ускорителем Therac-25. Основанная на предыдущей версии ускорителя, "улучшенная" модель Therac-25 могла генерировать два вида излучения: слабое электронное бета-излучение и нормальное рентгеновское излучение. Еще одно "улучшение" состояло в том, что вместо электромеханической защиты пациента в устройстве была реализована программная защита, якобы более надежная. Обе новые функции были некорректно реализованы неопытным программистом, результатом чего стали как минимум пять смертей и огромное количество несмертельных случаев переоблучения.
1988 г. Переполнение буфера в Berkeley Unix. Первый в мире компьютерный червь (так называемый червь Морриса) заразил от 2 000 до 6 000 компьютеров менее чем за сутки, эксплуатируя уязвимость в реализации функции gets(). В ОС Berkeley Unix эта функция ввода/вывода не имела ограничения на максимальную длину.
1988-96 гг. Генератор случайных чисел Kerberos в течение нескольких лет широко использовался в различных системах шифрования. Предполагалось, что программа должна выбирать ключ случайным образом из многих миллиардов чисел, но генератор случайных чисел выбирал из гораздо меньшего набора численностью примерно в миллион. Как результат, в течение восьми лет любой пользователь мог без труда проникнуть в компьютерную систему, которая использовала модуль Kerberos.
15 января 1990 г. Падение телефонной сети AT&T. Ошибка в новой версии прошивки междугородних коммутаторов привела к тому, что коммутатор перезагружался, если получал специфический сигнал от соседнего коммутатора. Но беда в том, что этот сигнал генерировался в тот момент, когда коммутатор восстанавливал свою работу после сбоя. В один прекрасный день, когда какой-то коммутатор в Нью-Йорке перезагрузился, он подал тот самый злополучный сигнал - и началось. Вскоре 114 соседних коммутаторов непрерывно перезагружались каждые 6 секунд, а 60 тыс. человек остались без междугородней связи на 9 часов, пока инженеры не установили на коммутаторы предыдущую версию прошивки.
1993 г. Широко разрекламированный процессор Intel Pentium неправильно производил деление с плавающей запятой, ошибаясь на 0,006%. Хотя эта проблема реально коснулась немногих пользователей, но стала настоящим кошмаром для имиджа Intel. Поначалу фирма согласилась менять процессор только для тех пользователей, которые могли доказать, что им в вычислениях нужна подобная точность, но затем согласилась поменять процессор всем желающим. Этот баг стоил Intel около 475 000 000 $.
1995-96 гг. Пинг смерти. Отсутствие проверки на ошибки при обработке IP-пакетов позволяла порушить практически любую операционную систему, отправив ей через интернет специальный пакет ("пинг").
4 июня 1996 г. Новая ракета-носитель Ariane 5, результат многолетней работы европейских ученых, гордость стран Евросоюза, взорвалась через 40 секунд после своего первого старта. Только научное оборудование на борту ракеты стоило около 500 000 000 $, не говоря о множестве побочных финансовых последствий. Система автоподрыва ракеты сработала после остановки обоих процессоров в результате цепочки ошибок. Началом этой цепочки послужило переполнение буфера, поскольку система навигации подала недопустимо большое значение параметра горизонтальной скорости. Дело в том, что система управления Ariane 5 переделывалась из Ariane 4, а там такого большого значения не могло быть теоретически. В целях снижения нагрузки на рабочий компьютер инженеры сняли защиту от ошибок переполнения буфера в этом программном модуле, поскольку были уверены, что такого значения горизонтальной скорости не может быть в принципе - и просчитались.
Ноябрь 2000 г. Национальный институт рака, Панама. Здесь произошла целая серия инцидентов, вызванная тем, что ПО для планирования радиационной терапии производства американской компании Multidata Systems International неправильно рассчитывало дозы облучения для пациентов. Программа позволяла врачу нарисовать на компьютерном экране расположение защитных металлических щитов, которые защищают тело от радиации. Но программа позволяла манипулировать только четырьмя щитами, тогда как врачи хотели задействовать пять. Они нашли способ "обхитрить" программу, если нарисовать все пять щитов в виде единого блока с дыркой посередине. Единственное, чего они не знали, что программа рассчитывает разные дозы радиации в зависимости от того, как нарисована дырка. Если рисовать ее особым образом, то устройство выдавало двойную дозу радиации. Как минимум восемь человек погибли, а еще 20 получили переоблучение. Врачи, которые должны были вручную перепроверять расчеты программы, были осуждены за убийство.
Все эти примеры, а особенно последний, еще раз показывают, что никогда нельзя в полной мере доверять компьютерам. Ведь программы для компьютеров создают люди, а человеку свойственно ошибаться.