Шрёдинбаг и другие именитые баги

Изображение Логика соотношений. Теории и закономерности.

Шрёдинбаг и другие именитые баги

Сообщение Terrin » Пн дек 07, 2009 11:26 am

По материалам русской Вики, английской Вики и английского словаря жаргонизмов

Шрёдинбаг (англ. Schroedinbug) — термин, используемый в программировании для описания программной ошибки, которая никак не проявляет себя, однако внезапно возникает, если кто-то наткнётся на неё в исходном коде или попытается использовать программу в необычных условиях и осозна́ет, что система вообще не могла работать при наличии такой ошибки. После этого программа перестаёт работать вообще до тех пор, пока ошибка не будет исправлена. Хотя это звучит невероятно, некоторые программы содержат в себе такие ошибки.
Слово «шрёдинбаг» происходит от мысленного эксперимента с котом Шрёдингера.
Примером шрёдинбага из классического фольклора можно считать историю о старике и бороде (хотя само название «шрёдинбаг» в ней, разумеется, не упомянуто).
Некоторого старика с длинной бородой спросили, куда он кладет бороду, когда спит — под одеяло или на одеяло. Он понял, что не знает, потому что никогда не задумывался над этим, а когда лег спать, попытался выяснить это опытным путем. Попробовал положить под одеяло — очень неудобно, на одеяло — тоже очень неудобно. Поскольку оба варианта не подходили, старик больше не мог заснуть, и через некоторое время скончался от недостатка сна.
Шрёдинбаг может быть образован сложной комбинацией парных ошибок (когда ошибка в одном месте компенсируется ошибкой противоположного действия в другом месте). В результате система может стать очень чувствительной к малым влияниям — небольшое изменение может разрушить баланс ошибок и парализовать работу системы (зачастую при этом откат рокового изменения не решает проблему, так как состояние системы успело значительно измениться).
"Старые мосты могут еще пригодиться. Лучше сжечь старые грабли."
Аватара пользователя
Terrin

 
Сообщения: 6297
Зарегистрирован: Вс апр 13, 2008 12:21 am
Откуда: Москва - Chicago
Тип: Штирлиц; ФВЭЛ
Пол: lady
Срок эксплуатации: 33

Re: Шрёдинбаг и другие именитые баги

Сообщение Terrin » Пн дек 07, 2009 11:30 am

Борбаг (англ. Bohr bug) — термин, используемый в программировании для описания программной ошибки, которая, в противоположность гейзенбагу, не исчезает и не меняет своих свойств при попытке её обнаружения. Близкий по значению русскоязычный аналог - "стабильный" или "устойчивый" баг.
Данный тип ошибки характеризуется как устойчивый и поэтому назван в честь атомной модели, разработанной Нильсом Бором.
"Старые мосты могут еще пригодиться. Лучше сжечь старые грабли."
Аватара пользователя
Terrin

 
Сообщения: 6297
Зарегистрирован: Вс апр 13, 2008 12:21 am
Откуда: Москва - Chicago
Тип: Штирлиц; ФВЭЛ
Пол: lady
Срок эксплуатации: 33

Re: Шрёдинбаг и другие именитые баги

Сообщение Terrin » Пн дек 07, 2009 11:33 am

Гейзенбаг (англ. Heisenbug) — термин, используемый в программировании для описания программной ошибки, которая исчезает или меняет свои свойства при попытке её обнаружения. Не полностью идентичный, но достаточно близкий по значению русскоязычный термин — «плавающая ошибка».
Примером могут являться ошибки, которые проявляются в окончательном варианте программы (релизе), однако не видны в режиме отладки, или ошибки синхронизации в многопоточном приложении.
Данное название является игрой слов и происходит от физического термина «Принцип неопределённости Гейзенберга», который на бытовом уровне понимается как изменение наблюдаемого объекта в результате самого факта наблюдения, происходящее в квантовой механике.
В интервью журналу ACM Queue (номер 8 за ноябрь 2004) Брюс Линдсей рассказывает, что присутствовал в тот момент, когда данный термин был впервые употреблён в значении «ты смотришь на него — и он исчезает» (сравните со словами Гейзенберга, который говорил: «чем более пристально вы глядите на один предмет, тем меньше внимания вы уделяете чему-то ещё»).
Возможные причины возникновения
Как правило, это низкоуровневые проблемы:

* Неинициализированная переменная — переменной не присвоено значение, но в отладчике она попадает на область памяти, заполненную нулями, а в реальной работе в памяти по тому же адресу находится произвольное значение.
* Неправильный порядок инициализации — инициализация может происходить на более поздней стадии работы, чем первое использование, при этом после инициализации проблема не проявляется (при этом на стадии отладки порядок инициализации совпадает с порядком использования).
* Ошибка синхронизации в многозадачной среде или многопоточном приложении (т. н. состояние гонки) — всевозможные ошибки от неправильной установки семафоров, до ошибок, связанных с взаимными приоритетами работы потоков (приоритеты при отладке и в реальной работе могут отличаться).
"Старые мосты могут еще пригодиться. Лучше сжечь старые грабли."
Аватара пользователя
Terrin

 
Сообщения: 6297
Зарегистрирован: Вс апр 13, 2008 12:21 am
Откуда: Москва - Chicago
Тип: Штирлиц; ФВЭЛ
Пол: lady
Срок эксплуатации: 33

Re: Шрёдинбаг и другие именитые баги

Сообщение Terrin » Пн дек 07, 2009 11:36 am

Мандельбаг (англ. Mandelbug) — термин, используемый в программировании для описания программной ошибки, чьё поведение столь сложно, что выглядит хаотичным. Это также подразумевает, что говорящий полагает, что это скорее борбаг, чем гейзенбаг.
Название происходит от имени Бенуа Мандельброта, основоположника фрактальной геометрии.
Однако стоит заметить, что, если не существует способа разделить ошибку, чьё поведение кажется хаотичным, и ошибку, чьё поведение действительно хаотично, то нет никакого смысла различать мандельбаг и гейзенбаг.
Некоторые используют термин мандельбаг для описания ошибки, чьё поведение не кажется действительно хаотичным, но столь сложно, что для её исправления требуется переписать программу с нуля. Примером такой ошибки может служить фундаментальная ошибка, допущенная при проектировании системы.
"Старые мосты могут еще пригодиться. Лучше сжечь старые грабли."
Аватара пользователя
Terrin

 
Сообщения: 6297
Зарегистрирован: Вс апр 13, 2008 12:21 am
Откуда: Москва - Chicago
Тип: Штирлиц; ФВЭЛ
Пол: lady
Срок эксплуатации: 33

Re: Шрёдинбаг и другие именитые баги

Сообщение Terrin » Пн дек 07, 2009 11:48 am

Баг "Фазы луны"
Когда все возможные параметры, от которых может зависеть ошибка, перебраны, и ни одна не оказалась связана с ошибкой, говорят, что существует дополнительный параметр - "Фаза луны". Это синоним глупого, бессмысленного параметра.
Однако задокументированы случаи, когда ошибка в программе буквально зависела от фазы луны! Причиной было изменение длины строчки кода, когда в данных указывалась (с большой точностью) фаза луны.
Другой знаменитый пример этой ошибки - проблема, возникшая в Церне при обработке данных с ускорителя элементарных частиц.
Инженеры выяснили, что эта ошибка реально связана с фазами луны. Прохождение Луны вызывает ничтожные деформации Земли. Но ускоритель имеет такую большую окружность - 27 км - что эти деформации начинают проявляться в данных. История вошла в физический фольклор под названием "месть Ньютона" как пример значения для современной науки простейших и давным-давно известных законов.

В целом ошибке "фаза луны" подвержены программы, которые зависят от времени. В каком-то смысле примером такой ошибки может быть знаменитая "ошибка 2000 года".
"Старые мосты могут еще пригодиться. Лучше сжечь старые грабли."
Аватара пользователя
Terrin

 
Сообщения: 6297
Зарегистрирован: Вс апр 13, 2008 12:21 am
Откуда: Москва - Chicago
Тип: Штирлиц; ФВЭЛ
Пол: lady
Срок эксплуатации: 33


Вернуться в Белологичности

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron