А это бага или фича? ;)
Нет ни одного человека, знакомого с компьютерами более месяца и не встречавшего ни одной ошибки в используемом софте. Такие ошибки обычно называют “бáга”, что в переводе означает жук; ведь именно жук, севший на микросхемы одного большого компьютера в прошлом вызвал один из первых глюков. Но, истории хватит пока что) Многие называют любую программную ошибку багой, хотя эти самые баги очень и очень разнообразны! Итак, практически тема дипломного проекта, классификация багов:
Бозебаг - это скопление ошибок в каком-то конкретном месте исполняемого кода, бесконечное их число.
Борбаг - ошибка, которая, в противоположность гейзенбагу, не исчезает и не меняет своих свойств при попытке её обнаружения. Данный тип ошибки характеризуется как устойчивый и поэтому назван в честь атомной модели, разработанной Нильсом Бором.
Гейзенбаг - тип ошибки, которая исчезает или меняет свои свойства при попытке её обнаружения.
Примером могут являться ошибки, которые проявляются в окончательном варианте программы (релизе), однако не видны в режиме отладки, или ошибки синхронизации в многопоточном приложении. Данное название является игрой слов и происходит от физического термина «Принцип неопределённости Гейзенберга», который на бытовом уровне понимается как изменение наблюдаемого объекта в результате самого факта наблюдения, происходящее в квантовой механике.
Дзенбаг - это такая ошибка, которая, в общем-то, ни на что не влияет, но при этом ошибкой всё же является.
Мандельбаг - бага, чьё поведение столь сложно, что выглядит хаотичным. Это также подразумевает, что говорящий полагает, что это скорее борбаг, чем гейзенбаг. Название происходит от имени Бенуа Мандельброта, основоположника фрактальной геометрии. Однако, если не существует способа разделить ошибку, чьё поведение кажется хаотичным, и ошибку, чьё поведение действительно хаотично, то нет никакого смысла различать мандельбаг и гейзенбаг. Некоторые используют термин мандельбаг для описания ошибки, чьё поведение не кажется действительно хаотичным, но столь сложно, что для её исправления требуется переписать программу с нуля. Примером такой ошибки может служить фундаментальная ошибка, допущенная при проектировании системы.
Метабаг - банальная грамматическая ошибка в тексте комментария. Является родственником дзенбага.
Фермабаг - это тип ошибок, чрезвычайно сложных для доказательства. Название происходит от печально известной теоремы Ферма.
Фермибаг - как и бозебаг, описывает скорее количество, чем качество, ошибок и определяет их число в интервале от одной до двух на отдельно взятую строку кода.
Шрёдинбаг - один из самых интересных типов ошибок, который никак не проявляет себя, однако внезапно возникает, если кто-то наткнётся на него в исходном коде или попытается использовать программу в необычных условиях и осознаёт, что система вообще не могла работать при наличии такой ошибки. После этого программа перестаёт работать вообще до тех пор, пока ошибка не будет исправлена. Хотя это звучит невероятно, некоторые программы содержат в себе латентные шрёдинбаги. Слово «шрёдинбаг» происходит от мысленного эксперимента с котом Шрёдингера, о котором можно прочитать вон там. Забавным примером можно считать историю о старике и бороде (хотя само название «шрёдинбаг» в ней, разумеется, не упомянуто). Некоторого старика с длинной бородой спросили, куда он кладет бороду, когда спит — под одеяло или на одеяло. Он понял, что не знает, а когда лег спать, попытался выяснить это опытным путем. Попробовал положить под одеяло — очень неудобно, на одеяло — тоже очень неудобно. Поскольку оба варианта не подходили, старик больше не мог заснуть, и через некоторое время скончался от недостатка сна.
Вот так! Казалось бы, ошибка и ошибка, а как интересно в них разобраться!
Материал взят из Википедии, а также додуман Паяльником и автором сего блога :)