Voodoo-programmering

Dålig programmering har jag sett en hel del av. En av anledningarna är förstås att programmeraren är väldigt okunnig, kanske nybörjare, och då ska man väl inte ställa för höga krav. En kul förklaring till konstig kod kan dock vara vad man kallar för voodoo-programmering.

Uttrycket voodoo-programmering kommer från antagandet att man gör en sak på ett visst sätt, och något händer. Kunskapen om det som händer från det att man “tryckte in en nål i dockans arm” till att smärta fogades till någons arm saknas helt, och man bryr sig inte om det. På samma sätt så vet programmeraren att om man gör så härhänder detta. Ointressant hur det exakt fungerar, och ofta är det helt vansinnig kod som ofta fungerar under ideala förhållanden. Men när den går sönder går den dels inte att förstå vad den gör, och man måste förmodligen skriva om rubbet för att få den att göra rätt saker.

En sak som gränsar till voodoo-programmering är cargo cult programmering. Till exempel vet programmeraren att man ska skriva kommentarer i koden, för det har ju denne hört att det ska man göra. Men då blir kommentarerna något i stil med “lägg ihop variabel a med variabel b”, det vill säga helt irrelevanta och beskriver inte alls de processer man försöker utföra. Man lägger till saker i koden som saknar relevans för att det är så man tror att man gör. Ett exempel är buggfixar där “programmeraren” går in och ändrar saker på måfå i koden tills den fungerar.

Uttrycket “cargo cult programming” kommer kanske inte helt oväntat från cargo cults, kulturer där väntan på fraktgods från flygplan är det centrala temat eller till och med religion. Dessa kulturer uppstod då, typiskt västerlänningar, kom på snabbvisit till ursprungsbefolkningar vid exempelvis krig. Västerlänningarna hade med sig varor och utrustning som kunde liknas vid magi. Det som hände efter att västerlänningarna avlägsnat sig var att urinnevånarna byggde egna små landningstorn och “radioapparater” av grenar och försökte locka till sig flygplan genom riter för att få västerlänningarna att komma tillbaka med fler varor. Fascinerande läsning är en artikel publicerad i Smitsonian Magazine, In John They Trust om John Frum-kulten. Slutklämmen på den artikeln är helt underbar:

As we look down into John Frum’s fiery Tanna home, I remind him that not only does he not have an outboard motor from America, but that all the devotees’ other prayers have been, so far, in vain. “John promised you much cargo more than 60 years ago, and none has come,” I point out. “So why do you keep faith with him? Why do you still believe in him?”

Chief Isaac shoots me an amused look. “You Christians have been waiting 2,000 years for Jesus to return to earth,” he says, “and you haven’t given up hope.”

08
Jun 2007
POSTED BY
DISCUSSION 4 Comments
TAGS

4 Responses to : Voodoo-programmering

  1. moose says:

    Voodoo hacking, är inte det vad man gör när man “baklängesingenjörar”
    en devicedriver för att få en fri (*BSD, Linux) drivis?

    Sedan minskade ju inte nyfikenheten på John Frum av nedanstående,
    har din blogg nått /:-nivåer månne? ;^P

    ==============8x—————————–
    Forbidden

    You don’t have permission to access /issues/2006/february/john.htm on this server.

    Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
    Apache/2.0.46 (Red Hat) Server at http://www.smithsonianmagazine.com Port 80

  2. pawal says:

    Det hoppas jag verkligen var en tillfällig glitch, det fungerar för mig nu när jag provar igen.

  3. Joachim says:

    Moose: Nej, voodoo-programmering är inte samma sak som reverse engineering. En bra reverse engineer (Jon Lech Johanssen) kan sina verktyg och vet hur dom och miljön fungerar. Däremot saknar han information om delar av målet – ex hårdvaran.

    Jag har annars kört med en annan term för samma fenomen som voodoo-programmering: Hands off-programmering. Uttrycket kommer av vad som händer när kodaren (till slut) lyckas få saker och ting att funka – han/man drar snabbt bort händerna från tangentbordet för att inte riskera att sabba det som (av någon anledning man ej begriper) fick eländet att funka.

    En viktig aspekt med voodoo-programmering är att denna typ av kod är extremt spröd. Det räcker med att någon form av förutsättning ändras så brakar allt samman. Detta gäller även för mycket annan kod, men för voodoo-kod är förutsättningarna inte bara implicita, de är tom okända.

  4. christina says:

    kommunalkodning är min favorit av de alla. nån står bakom och skriker till den som hackar knapparna. kan bli bra, blir oftare dåligt.