A Heisenbug egy szleng kifejezés , amelyet a programozásban olyan szoftverhibák leírására használnak, amelyek észlelésekor eltűnnek vagy megváltoznak a tulajdonságai. Ezt a szót, ellentétben a " bug " ( angol bug ) szóval, ritkán használják oroszul. Nem teljesen azonos, de jelentésében meglehetősen közel áll az orosz kifejezéshez - "lebegő hiba".
Ilyenek lehetnek például a program végső verziójában megjelenő, de hibakeresési módban nem látható hibák, vagy a többszálú alkalmazások időzítési hibái .
Ez a név játék a szavakkal , és a kvantummechanikából származó " Heisenberg bizonytalansági elve " kifejezésből származik , amely a mindennapi szinten a megfigyelt objektumban a megfigyelés tényéből adódó váratlan változásként értendő.
Az ACM Queue-nak [1] adott interjújában Bruce Lindsay azt mondja, hogy jelen volt, amikor a kifejezést először használták a „ránézel – és eltűnik” értelemben (hasonlítsd össze Heisenberg szavaival , aki azt mondta: „ figyelmesebben nézel egy dolgot, annál kevésbé figyelsz valami másra.
Ezek általában alacsony szintű problémák:
Optimalizálási hibák:
A heisenbugokat nagyon nehéz keresni, mivel véletlenszerű tényezők függvényében jelennek meg, és instabilan reprodukálódnak (a többszálú rendszer állapotának elemzésének bonyolultsága is szerepet játszik). Ezért a tervezési szakaszban megpróbálják levágni őket, átgondolva a szinkronizálási eljárásokat.
Ezek a szavak, valamint a "heisenbag" gyakorlatilag nem találhatók oroszul.
A Borbag ( angolul Bohr bug ) egy olyan hiba, amely a Heisenbuggal ellentétben nem tűnik el, és nem változtatja meg a tulajdonságait, amikor megpróbálja észlelni, hasonlóan Niels Bohr elektronpályák modelljének stabilitásához . Hasonló orosz nyelvű analóg a „stabil” vagy „fenntartható” hiba [2] , „szisztematikus hiba”.
A mandelbug olyan hiba , amelynek viselkedése annyira összetett, hogy kaotikusnak tűnik [3] . A név Benoit Mandelbrot , a fraktálgeometria alapítója nevéből származik . Érdemes azonban megjegyezni (a Turing-teszthez hasonló elv alapján ), hogy ha nincs mód a kaotikusnak tűnő hibák és az igazán kaotikusnak tűnő hibák elkülönítésére, akkor nincs értelme különbséget tenni a Mandelbug és egy Heisenbug [4] . Vannak, akik a mandelbug kifejezést használják olyan hibák leírására, amelyek viselkedése nem tűnik igazán kaotikusnak, de annyira összetett, hogy a javításhoz újra kell írni a programot. Ilyen hibára példa a rendszertervezésben elkövetett alapvető hiba [5] .
A Schroedinbug [6] ( eng. schroedin bug - a Schrödinger macskájával végzett gondolatkísérlet tiszteletére ) egy olyan hiba, amely semmilyen módon nem nyilvánul meg, hanem hirtelen felbukkan, ha valaki ráakad a forráskódban, vagy megpróbálja használni a programot szokatlan körülmények között, és rájön, hogy ilyen hiba esetén a rendszer egyáltalán nem tud működni. Ezt követően a program a hiba kijavításáig egyáltalán nem működik. Bár hihetetlenül hangzik, egyes programok tartalmaznak ilyen hibákat.
A hindenbug [7] [8] ( eng. hinden bug - a hindenburgi léghajókatasztrófa neve után ) egy olyan hiba, amelynek katasztrofális következményei lehetnek, például az adatok teljes megsemmisülése.
A Higgs-bugson [8] [9] ( angol. higgs-bugson - a Higgs -bozonnak nevezett részecske tiszteletére ) egy olyan hiba, amelynek létezését megjósolják (leggyakrabban közvetett adatok vagy egyetlen felhasználó jelentései alapján), de rendkívül nehéz, ha nem lehetetlen. , mesterségesen reprodukálni fejlesztési vagy tesztelési körülmények között. A kifejezés használható olyan hibával kapcsolatban is, amely a kódban nyilvánvaló (matematikai bizonyítás), de valós körülmények között soha nem figyelték meg.