
Historien om en Heisenbug
Mens der blev skruet lidt generelt på en server, blev log-niveauet for et delsystem skruet en smule ned og log-beskeder dirigeret et andet sted hen. Det burde jo ikke være problematisk, men kort efter begyndte der at vise sig en lidt mystisk fejl i loggen. Efter lidt fiflen rundt blev logningen slået til igen og samtidigt forsvandt fejlen.
Et eksempel på en såkaldt Heisenbug, det vil sige en fejl der forsvinder eller ændrer opførelsen når man prøver at debugge den. Det er selvfølgelig opkaldt efter Heisenbergs ubestemhedsprincip fra kvantemekanikken: Man kan ikke både vide præcist hvor en partikel er og hvor hurtigt den bevæger sig.
Ifølge fejlbeskeden gik et select-kald galt med beskeden 'Illegal seek'. Det bør ikke kunne ske. For det første fordi det ikke giver mening og for det andet fordi det ikke er en af de fire fejlmuligheder dokumentationen beskriver.
Der blev fremsat en række sjove teorier, som for eksempel at det vi i virkeligheden så, var en fejl fra fejlhåndteringssystemet som gjorde sjove ting bag om ryggen på os. Men faktum var og blev at vi kaldte select og bagefter var errno-variablen sat til 29, også kendt som 'Illegal Seek'.
Efter at have stirret i lang tid på vores egen kode surfer jeg lidt tilfældigt rundt i den resterende kodebase og pludselig går det op for mig at den wrapper vi bruger om select ikke gør forskel på om select giver en fejl eller om den bare laver en timeout. Vi har bare antaget at hvis errno var sat så var var det ikke en timeout - men select fjerner ikke en eventuel tidligere fejl, det har vores log-system været så venlig at gøre.
Jeg er en dårlig programmør, skyd mig!
Kommentarer (14)
Det er ikke fordi jeg konsekvent vil til at brokke mig over dårlige oversættelser. Jeg vil blot bemærke den stigende tendens blandt danskere, især indenfor IT-branchen, som oversætter ord og begreber direkte. En af de angloismer jeg især har set ofte på det sidste er ordet: proprietær. På dansk har det indtil for ganske nyligt haft betydningen gårdejer, men nu ser det ud til der nogen der mener at det skal have samme betydning som det engelske ord proprietary.
Som sagt er det ikke brok, men blot en lille bemærkning, som måske får folk til at tænke to gange over hvad noget, som man kun har læst om på engelsk, faktisk hedder på dansk ;-)
Jeg har ikek haft fysik siden 3. G, så jeg har ingen ide om den korrekte danske fagterm. Men hvis det endelig skal være så ser det ud til at fagtermen er 'Heisenbergs ubestemhedsrelationer'.
http://www.gamma.nbi.dk/Galleri/gamma145/bogand.ps.gz
http://www.phys.au.dk/~nygaard/Homepage_da/Formidling_files/BoseEinstein...
http://da.wikipedia.org/wiki/Heisenbergs_ubestemthedsrelationer
http://www.illvid.dk/polopoly.jsp?d=144&a=320
Heisenberg og uvished giver ikke rigtigt resultater på google.
Om Heisenbergs princip handler om uvished (dvs. om observatøren ikke kan finde ud af hvad tilstanden er) eller om ubestemthed (at der ikke er besluttet nogen tilstand) er et dybt filosofisk spørgsmål, der med rette blev rejst af dem der ikke brød sig om ludomani på gudeplan.
Som programmør kan man nyde hvorledes Heisenbergs princip på nydelig rekursiv vis, gør det utroligt svært at udrede på videnskabelig vis hvad tingenes tilstand er.
Bells ulighed og Alain Aspect's forsøg har dog, så vidt jeg er orienteret, slået fast at der er tale om en ubestemthedsrelation og ikke en uvishedsrelation.
Med andre ord; Bohr havde ret, Einstein tog fejl og Gud raffler.
Desuden har Heisenbergs princip altid været oversat til "ubestemthed" på dansk.
Poul-Henning
Jeg bøjer mig for Google og selv om jeg ikke er meget for Poul-Hennings "sådan er har det altid været"-argument, er jeg ikke i tvivl om at han ved mere om det end mig. Det der slog mig mest var heller ikke ordet ubestemthed, men at princip var sat efter og ikke før. Jeg ville normalt på dansk skrive: princip om/for "indsæt ord her", fremfor "ind sæt ord her"-princip.
Men for lige at grave lidt mere angloismerne, vil jeg gerne lige nævne en sætning som de fleste nok høre en eller anden afart af i løbet af sin dag. "De enkelte karakterer i strengen", som jo ikke giver nogen som helst mening, med mindre man ved at tegn hedder character på englesk, og at en streng ikke er noget man spiller på, men at der findes det engelske ord string, som kan oversættes til række, serie eller gruppering.
Jeg noterer mig at du bruger bolle-å istedet for dobbelt-a, er det ikke lige så forkasteligt ?
Et sprog er til for at blive brugt og udviklet.
Poul-Henning
Det er ikke fordi jeg har noget imod at sproget udvikler sig, jeg mener bare godt man kan tale et sprog så folk der ikke er fag-nørder eller taler engelsk kan forstå hvad man siger. Som jeg skrev tidligere har jeg jo observeret at proprietær har taget en ny betydning, og det synes jeg egentlig er helt fint, fordi jeg mener ikke der findes noget godt ord på dansk som beskriver det samme.
Når man i den fysiske verden foretager en måling (dvs. en bestemmelse) af en fysisk størrelse, så er den bedrøvelige sandhed at dette ikke kan gøres eksakt, men at der altid er en 'ubestemthed' tilbage på resultatet.
Heisenberg påviste, at der for visse par af egenskaber ved partikler gælder en relation imellem ubestemthederne på størrelserne.
Det er altså en relatione imellem ubestemtheder, og derfor en ebestemthedsrelation
/eskild
Som Jesper skriver udvikler sproget sig. Jesper selv introducerer således ordet angloisme. I dansk har vi hidtil benyttet ordet anglicisme, men det kan meget vel være, at Jespers ord slår an ;-)
Der kan I selv se hvor skadet folk i IT-branchen er, selv jeg, som selv synes jeg bruger tid på at finde ud af om jeg bruger den korrekte oversættelse, kan falde i ;-).
Som sagt kan jeg godt gå med til at ordet proprietær indgår som et nyt ord i det danske sprog, men karakter og streng i IT-betydningen har jeg meget svært ved at sluge.
Det fremhæves ofte at engelsk har så mange flere gloser end f.eks. dansk.
Det hørte jeg forleden en rigtig god forklaring på:
Oldengelsk stammer fra anglerne og sakserne som oprindeligt kom fra det vi idag kender som Schleswig - Holsten. Dansk og norsk besættelse og anden påvirkning gav ydeligere input af nordiske ord til engelsk.
I 1066 overtages den engelske trone af Normannerne, der trods nordisk oprindelse talte fransk. Det bragte en mængde franske ord ind i sproget, idet eliten nu talte fransk i England. Fidusen var så, at både de gamle og de nye ord forblev i sproget og i brug idet de fik ganske små varierende betydninger.
På denne måde er engelsk blevet et rigt sprog.
Nogen mener at det samme ikke må overgå dansk. Det er en skam.
Jeg synes ganske afgjort, at det hedder "tegn" og ikke "karakter" (karakterer er noget andet)...
Men Jesper, streng på dansk kan også betyde
"række af dele el. elementer som er indbyrdes tæt forbundne, fx ord, tegn el. molekyler". Fundet i Den Danske Ordbog på sproget.dk, så den skulle være god nok ;-)
Jeg ville personligt også benytte "tekststreng" da det vil være nemmere at forstå for de fleste.
Teknisk sprog skal ikke kunne forstås af "de fleste".
Det er ligesom dem der mener at man ikke må benytte et programmeringssprogs specielle konstruktioner, fordi så vil en der ikke bruger det sprog have svært ved at forstå det, who cares? Hvis han ikke kan benytte sproget, har han bare at holde snitterne væk.
Problemet er jo ikke at der kommer nye ord til. Problemet er at de få danske ord vi har får flere og flere betydninger. Dansk er ikke et særligt ordriget sprog, og jeg mener derfor at vi er nød til at sætte en grænse for hvor mange betydninger et ord kan tage. F.eks. har jeg intet problem med at lade proprietær tage en ny betydning, fordi det i forvejen kun har en enkelt, og sjældent brugt betydning. Jeg har derimod meget imod at lade karakter tage endnu en betydning, især en som der allerede findes et andet dansk ord for. Det min kritik går på er at man ikke bare bør oversætte engelske ord til det danske ord som lyder eller staves næsten ens. Men man bør lige sætte sig ned og overveje om der allerede findes et dansk og for det, eller måske et gammelt ord man kan genbruge. Jeg kan godt lide den måde Færingene har valgt at takle problemet på, da de skulle finde et ord for CD, valgte de ordet fløga, som betyder lag i en stak, fordi det ikke blev brugt ret ofte i den betydning og fordi det egentlig stemte overens med den nye betydning.

