Heisenbug

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 21. november 2016; checks kræver 30 redigeringer .

Heisenbug er et  slangudtryk , der bruges i programmering til at beskrive en softwarefejl, der forsvinder eller ændrer dens egenskaber, når den opdages. Dette ord, i modsætning til ordet " bug " ( engelsk  bug ), bruges sjældent på russisk. Ikke helt identisk, men ret tæt på betydningen af ​​det russiske udtryk - "flydende fejl".

Eksempler kan være fejl, der vises i den endelige version af programmet, men som ikke er synlige i debug -tilstand , eller tidsfejl i et program med flere tråde .

Navnets oprindelse

Dette navn er et ordspil og kommer fra begrebet " Heisenbergs usikkerhedsprincip " fra kvantemekanikken , som på det daglige plan forstås som en uventet ændring i det observerede objekt som følge af selve observationen.

I et interview med ACM Queue [1] siger Bruce Lindsay , at han var til stede, da udtrykket første gang blev brugt i betydningen "du ser på ham - og han forsvinder" (sammenlign med ordene fra Heisenberg , der sagde: "den mere indgående ser du på én ting, jo mindre opmærksomhed er du på noget andet.

Mulige årsager

Typisk er disse problemer på lavt niveau:

Optimeringsfejl:

Kampmetoder

Heisenbugs er meget vanskelige at lede efter, da de optræder afhængigt af tilfældige faktorer og gengives ustabile (kompleksiteten ved at analysere tilstanden af ​​et multitrådsystem spiller også sin rolle). Derfor forsøger de at afskære dem på designstadiet ved at tænke synkroniseringsprocedurerne igennem.

Lignende begreber

Disse ord, såvel som "heisenbag", findes praktisk talt ikke på russisk.

Borbag ​​( engelsk  Bohr bug ) er en bug, der i modsætning til Heisenbug ikke forsvinder og ikke ændrer dens egenskaber, når man forsøger at opdage den, svarende til stabiliteten af ​​Niels Bohrs model af elektronorbitaler . En lignende russisk-sproget analog er "stabil" eller "bæredygtig" fejl [2] , "systematisk fejl".

En  mandelbug er en fejl , hvis adfærd er så kompleks, at den ser kaotisk ud [3] . Navnet kommer fra navnet på Benoit Mandelbrot , grundlæggeren af ​​fraktal geometri . Det er dog værd at bemærke (på et princip svarende til Turing-testen ), at hvis der ikke er nogen måde at adskille en fejl, hvis adfærd ser ud til at være kaotisk, og en fejl, hvis adfærd er virkelig kaotisk, så er der ingen mening i at skelne mellem en Mandelbug og en Heisenbug [4] . Nogle bruger udtrykket mandelbug til at beskrive en fejl, hvis adfærd ikke virker rigtig kaotisk, men er så kompleks, at det kræver at omskrive programmet fra bunden for at rette det. Et eksempel på en sådan fejl er en grundlæggende fejl i systemdesignet [5] .

Schroedinbug [6] ( eng.  schroedin bug  - til ære for tankeeksperimentet med Schrödingers kat ) er en fejl, der ikke viser sig på nogen måde, men pludselig opstår, hvis nogen falder over den i kildekoden eller forsøger at bruge programmet under usædvanlige forhold og indser, at systemet slet ikke kunne fungere i nærvær af en sådan fejl. Derefter stopper programmet overhovedet med at fungere, indtil fejlen er rettet. Selvom det lyder utroligt, indeholder nogle programmer sådanne fejl.

Hindenbug [7] [8] ( eng.  hinden bug - efter navnet på Hindenburg luftskibskatastrofen ) er en fejl med katastrofale konsekvenser, for eksempel fuldstændig ødelæggelse af data.

Higgs bugson [8] [9] ( eng.  higgs-bugson - til ære for partikelen kaldet Higgs boson ) er en fejl, hvis eksistens er forudsagt (oftest ifølge indirekte data eller enkeltbruger rapporter), men som er ekstremt vanskelig, hvis ikke umulig. , reproducere kunstigt under udviklings- eller testforhold. Udtrykket kan også bruges i forhold til en fejl, der er tydelig i koden (matematisk bevis), men som aldrig er blevet observeret under virkelige forhold.

Noter

  1. Bruce Lindsay. A Conversation with Bruce Lindsay  (engelsk)  // ACM Queue: magazine. - 2004. - November ( nr. 8 ). Arkiveret fra originalen den 4. februar 2022.
  2. Jargonfilen. Bohr-bug Arkiveret 12. januar 2013 på Wayback Machine 
  3. Den nye hackers ordbog Arkiveret 8. september 2013 på Wayback Machine  .
  4. M. Grottke og KS Trivedi, Softwarefejl, softwarealdring og softwareforyngelse. Journal of the reliability engineering association of Japan, udgave 27, nummer 7, 2005, side 425-438.
  5. Michael Grottke, Kishor S. Trivedi, " Bekæmpelse af fejl: fjern, prøv igen, repliker og foryng Arkiveret 27. marts 2010 på Wayback Machine "  . Computer, udgave 40, nummer 2, februar 2007, side 107-109, doi:10.1109/MC.2007.55
  6. Jargonfilen. Schroedinbug Arkiveret 8. september 2013 på Wayback Machine 
  7. Hindenbug . wiki.c2.com. Hentet 24. oktober 2019. Arkiveret fra originalen 8. august 2020.
  8. ↑ 12 Matt Lynley . 20 sjove programmeringsjargon-sætninger, du bør bruge, når du taler med ingeniører . business insider. Hentet 24. oktober 2019. Arkiveret fra originalen 24. oktober 2019.
  9. Ny programmeringsjargon . blog.codinghorror.com. Hentet 24. oktober 2019. Arkiveret fra originalen 4. november 2019.