О багах и героях

    Был такой в истории семейства кошачьих известный учёный – Шрёдингер. Как ни странно, изучал ядерную физику и квантовую механику. Свой известный эксперимент (подробно описан тут) он, слава богу, поставил только мысленно (ни один кот при этом не пострадал), но зато оставил свою фамилию в истории. Знаменитый кот Шрёдингера стал символом издевательств наукой над животными, признаком критического подхода к неподтверждённой экспериментами теории и лозунгом физиков – противников применения квантовой механики при изучении субатомных систем.

    Дальше – больше. Имена учёных физиков и химиков перекочевали в сферу тестирования ПО, и теперь мы можем наслаждаться такими терминами, как борбаг, шрединбаг, гейзенбаг, мандельбаг. О них по порядку.

    Шрёдинбаг (англ. Schroedinbug) – термин, используемый в программировании для описания бага, который никак не проявляет себя, однако внезапно возникает, если кто-то наткнётся на него в исходном коде или попытается использовать программу в необычных условиях и осозна́ет, что система вообще не могла работать при наличии такой ошибки. После этого программа перестаёт работать вообще до тех пор, пока баг не будет исправлен. (Wikipedia)

    Бред какой-то, скажете. Согласна. Вернее, была согласна, пока мне про такой баг не рассказали. Жестокая вещь. Знакомый программист работает на создании системы автоматического анализа текста, и на финальном этапе сборки очередной версии вдруг обнаруживает: структура кода такова, что не допускает адекватного анализа текста на другом языке, кроме английского, вообще. Но как-то же он до этого работал – с французским, немецким, даже японским… Версии выпускались и продавались. А тут – бац! И всё…. Не работает… Пришлось переделывать большой кусок работы.

    Ещё интереснее такая штука, как гейзенбаг.

    Гейзенбаг (англ. Heisenbug) – термин, используемый в программировании для описания программной ошибки, которая исчезает или меняет свои свойства при попытке её обнаружения. Название этого типа багов является игрой слов и происходит от физического термина «Принцип неопределённости Гейзенберга», который на бытовом уровне понимается как изменение наблюдаемого объекта в результате самого факта наблюдения, происходящее в квантовой механике. (Wikipedia)

    С таким фокусом я столкнулась лично. Обнаружила баг случайно, естественно, внесла в базу и отправила на исправление. А программисты мне и говорят: а не воспроизводится он, что-то ты напутала. Или сама случайно что-то нажала – вот информация и стёрлась. И поди им докажи, что это баг был: воспроизвести и сама не могу…

    А потом этот баг снова повторился, только в другом варианте. И ещё раз. И ещё. И только тогда программисты почесали задумчиво головы и сказали: «Да… И впрямь баг!» И началась охота…

    …Через 8 часов переворачивания маленького сайтика (4 странички!) я уже села считать время появления багов и начала подумывать о том, где бы раздобыть расположения планет в это время и как узнать дату рождения и размер левой ноги администратора сайта…

    Так я этот баг и не нашла. :( Судя по всему, для того, чтобы он проявился, нужна какая-то специфическая последовательность действий (причём довольно длинная), так что дальнейшие мучения сайта могут вообще ни к чему не привести, если, например, появление бага зависит от того, каким по счёту было определённое действие…

    Гораздо проще всё с борбагами.

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

    Такие ошибки программисты легко воспроизводят и легко исправляют. Если, конечно, их правильно контролировать ;)

    Например, так:


    Поделиться публикацией

    Комментарии 1

      0
      =) Интересненько. Я теперь боюсь лезть в свой код. Там столько всего может оказаться! А что ещё страшнее (?!), может НЕ оказаться!

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое