Как стать автором
Обновить

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Теги:
Хабы:
+9
Комментарии1

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн