Diskursprogrammering 2.0
0. Utvecklarens förord
Den här texten är drygt ett år gammal. Det här är version två av den. Den behandlar diskursbegreppet i relation till programmeringens funktioner. Jag skulle uppskatta kritik av texten. Det är egentligen allt ni behöver veta.
1. Inledning
Det är nu – med min begränsade kunskap inom både programmering och diskursanalys – som jag med glädje skall syntetisera de båda i ett försök att förklara diskurs som begrepp. Vad är det? Vad innebär det? Varför är det ett centralt begrepp inom många akademiska fält? Varför är det inte detsamma som t.ex. diskussion? Observera att jag tänker förenkla programmeringsspråket lite (eller mycket) så att det blir mer lättförstått – ni behöver alltså inte kommentera eventuella syntaxfel och liknande. Låt oss nu börja.
2. Diskursprogrammering i Python på fult vis
Det enda programmeringsspråk jag har det minsta koll på heter Python. De filer man skriver i Python har filändelsen ”.py”. Låt oss säga att vi skriver två lätta program. Ett som adderar siffror och ett som adderar ord. Alltså: Ett av programmen vi skapat tar två siffror vi anger, t.ex. 1 och 2, adderar dessa och berättar sedan vad resultatet är. Det andra programmet vi skapat adderar två ord vi anger, t.ex. ”banan” och ”äpple” och berättar för oss vad resultatet är: ”bananäpple”. Två ytterst simpla och dumma program, men det är just den strikta, logiska enkelheten i programmering jag vill åt – och det faktum att det utifrån detta kan göras (och de facto görs) otroligt komplexa system, program, spel och så vidare.
2.1 Importering av funktioner – överförandet av mening
Så vi har alltså två program. Det första programmet som adderar siffror döper vi till ”siffror.py”, det andra programmet som adderar ord döper vi till ”ord.py”. Som ni minns är ”.py” filändelsen för den fil (det program) vi skrivit i Python – programmen sparas alltså i två olika filer, helt separata från varandra. Om ni nu säger att vi vill skriva ett tredje program, en kalkylator som kan addera både siffror och ord, så kommer vi vilja använda de två tidigare programmen vi skapat – ord.py och siffror.py. I detta tredje program – döpt till kalkylator.py – använder vi oss således av en importeringsfunktion som heter ”import”. Genom detta importerar vi programfunktionerna från ett annat program – i detta fall först från ord.py och siffror.py. Vi gör detta genom att i vårt kalkylatorprogram skriva ”import ord.py” och sedan ”import siffror.py”. Vi har nu gjort så att vi direkt i kalkylatorprogrammet kan komma åt både ordadderingsprogrammet och sifferadderingsprogrammet. Det räcker alltså med att köra igång kalkylator.py för att komma åt funktionerna för både ord- och sifferaddering. Men nu stöter vi på lite problem.
2.2 Namespaces som diskurser
Inom programmering finns något som kallas ”namespace”, vilket är ett avgränsat område (t.ex. en fil, ett program eller dylikt) där ett visst ord betyder en viss sak inom programmeringens logik. Detta är relevant i förhållande till vårt exempel, ty i ordadderingsprogrammet (ord.py ) så betyder ”addera” just ”lägg ihop två ord”. I sifferadderingsprogrammet däremot, så betyder ”addera” däremot ”lägg ihop två siffror”. Det här är inte ett problem så länge de båda programmen har olika namespaces, vilket är just vad de har så länge de håller sig till sina egna filer. Men när man vill importera de båda programmens olika adderingsfunktioner (ordaddering/sifferaddering) till vår kalkyleringsfil (kalkylator.py) så hamnar de i samma namespace, och ”addera” har plötsligt två betydelser – en omöjlighet i programmeringsfallet. Detta löser man genom att referera till ordadderingen som ”ord.addera” och sifferadderingen som ”siffror.addera” (alltså namnet på originalfilen, en punkt och sedan den funktion/det ord man vill använda). Man signalerar alltså genom detta att ”nu använder jag ‘addering’ enligt dess funktion/betydelse i ordprogrammet” och vice versa. De båda ”addera”-funktionerna får således samsas genom att man alltid refererar till dem med dess originalfils namn först. Att bara referera till ”addera” har faktiskt ingen funktion alls i vårt nuvarande kalkyleringsprogram.
2.3 Att importera en funktion – att artikulera ett element
Föreställ er nu att vi tycker att sifferadderingen är den viktigaste typen av addering (”ordaddering är ett konstigt påhitt som vi dessutom inte kommer använda oss av så mycket – addering syftar ju faktiskt egentligen på sifferaddering!”). Då kanske vi vill göra så att ”addera” (utan ”siffror.” framför) automatiskt syftar till addering av siffror i vårt kalkyleringsprogram. Då använder vi oss inte av ”import siffror.py”, utan ändrar på vårt kommando till ”from siffror import addera”. Nu tar vi alltså funktionen ”addera” från siffror.py och importerar det direkt till vårt kalkyleringsprogram utan att gå omvägen genom dess originalfil – vi kan nu således referera till sifferaddering endast genom ”addera” och inte längre genom ”siffror.addera”.
3. Diskursprogrammering i verkligheten – på fult vis
Nu är den huvudsakliga programmeringsbiten avklarad. Om du känner dig väldigt förvirrad så är det synd men högst förståeligt, då saker som ”namespace” från början fick mig att rynka på näsan när jag läste om det. Jag skall hur som helst nu försöka trolla om vårt programmerings-/adderingsexempel till ett diskurs-/politikexempel. Jag tänker använda mig av ordet ”kvinna” som ersättare av ”addera” och vårt kalkylatorsprogram kommer att bytas ut mot ”politiken”. Istället för filändelsen ”.py” kommer jag skriva ”.dis” som står för diskurs. Alltså – varje fil i programmeringsexemplet är nu en diskurs, och för att tydliggöra detta avslutar jag varje diskurs med ”.dis” i kommande exempel. Innan jag börjar med syntetiseringen av programmerings- och diskursbegreppet skall jag ge en kort sammanfattning av hur jag ser på begreppet diskurs:
3.1 Diskurs – en meningskonstellation
Diskurs är ett uttryck för en viss gruppering av åsikter, betydelser och diskussionsförutsättningar vilken i förhållande till andra diskurser (likartade i form men inte i innehåll) försöker göra anspråk på att vara bärare av de rätta definitionerna, åsikterna, betydelserna etc. Diskurser är alltså något högst språkbaserat, men det är inte för detta overkligt – snarare är det grunden till all kollektiv påverkan av verkligheten vi lever i (”politik”, vill jag kalla det). Ni kan säkert redan nu förstå vart jag vill ta programmeringsexemplet. Låt mig därför börja.
3.2 Diskursernas kamp – konflikt i ett namespace
Istället för skillnaden mellan addering (av ord) och addering (av siffror) kommer jag nu prata om två olika innebörder av ordet ”kvinna”. Låt oss ta två grovt förenklade (och därför väldigt klara, men oprecisa) exempel. I vår ena diskurs som härstammar ur ett mansbaserat samhälle från 1700-talet (man1700.dis) bär ordet kvinna på tre innebörder: ”tar hand om hem och familj”, ”saknar rationell förmåga”, ”underlägsen mannen”. I vår andra diskurs som härstammar ur en feministpolitik från 2000-talet (fem2000.dis) bär ordet kvinna på tre helt andra innebörder: ”jämställd mannen”, ”rationell”, ”fri att göra egna livsval”. Så länge ”kvinna” bara existerar i de separata diskurserna – alltså två helt olika namespaces, för att prata programmeringens logiska språk – så är allt frid och fröjd och det uppstår inte några problem (rent logiskt sett, d.v.s.). Men sekunden de båda möter varandra i ett politiskt sammanhang (som i sig själv är en diskurs – ”politik.dis”) så uppstår en motsättning. I denna vår väldigt förenklade politiska diskurs så importeras de båda diskursernas begrepp – hade det varit ett datorprogram hade vi skrivit ”import man1700.dis” och ”import fem2000.dis”.
3.3 Levande diskurser, döda program
Vi refererar alltså i politik.dis till två olika definitioner av kvinna – man1700.kvinna och fem2000.kvinna – med helt olika innebörder. Skillnaden mellan diskurserna och programmeringsfilerna är dock efter detta stor: filerna är viljelösa och neutrala och de styrs av programmeraren själv, en person med endast en vilja som lätt kan manipulera programmen han själv skapat. I diskursfallet är det hela mycket svårare och mer komplext. För det första styrs varje fil (varje diskurs) inte av en, utan av en multitud av personer. Diskurserna vill hävda sig själva och drivs av diskursdeltagarna till att fastslå sin definition av ett begrepp som det rätta. Så länge 2000-talets feministers kvinna alltid refereras som till ”fem2000.kvinna” så är de inte nöjda, utan nöjer sig först när deras definition av kvinna refereras till som just ”kvinna” och inget annat. På samma sätt så vill de personer som sluter sig till 1700-talets manliga diskurs att ”man1700.kvinna” refereras till som endast ”kvinna”.
3.4 Hegemoniserande diskurser
Men, varför är det här nu intressant? Jag har kanske egentligen bara pratat om självklarheter än så länge. Men poängen är att det i definitionen av ett begrepp ligger en väldig makt. För den sekund där ”man1700.kvinna” blir till endast ”kvinna”, så är det endast den diskursens kvinnosyn som kan refereras som den sanna kvinnan, endast den diskursens definition som är riktig. När ”man1700.kvinna” blir ”kvinna” så är kvinnan i politiken (politik.dis) begränsad till de funktioner/egenskaper som man1700.dis har gett henne. Alltså är det då omöjligt att åberopa, aktivera eller använda sig av några andra begrepp av kvinnan än de som finns i man1700.dis. För att likna det hela vid programmering igen: Det är omöjligt att åberopa ”kvinna.rationell” om man importerat det kvinnobegrepp som ”man1700.dis” bär på till det namespace som ”politik.dis” besitter. Då kan man endast åberopa ”kvinna.irrationell”, ”kvinna.underlägsen”, ”kvinna.hemochfamilj”. Med ”åberopa” åsyftar jag egentligen den bild av kvinnan som skapas och gång på gång fastslås bland deltagarna i den politiska diskurs där en viss bild av kvinnan är fastslagen som den ”sanna” och därför ständigt nämns. Det är i detta diskursens maktbegrepp/maktanspråk/makt ligger. Det är endast när en annan diskurs ställer sig emot allmänt accepterade begrepp och ifrågasätter dem – som var och är fallet med fem2000.dis – som man har en chans att förändra förlegade, bakåtsträvande och skeva synsätt.
4. Utledning
Två sista punkter.
4.1 Disclaimer och förenklande
För det första vill jag snabbt notera att min text innehåller idéhistoriska, genusvetenskapliga, programmeringsbaserade och språkliga misstag. Jag laborerar med enkla exempel men sanningen är att sanningen inte alltid kan förklaras på enkla sätt. Och i relation till detta, den sista och avslutande punkten:
4.2 Det enkla blir det komplexa
Som jag sade i början ville jag åt programmeringens simpla och ganska så självklara logik, men också det faktum att man utifrån detta kan bygga extremt komplexa system. Förklarat som ovan så verkar diskurser kanske som något ganska enkelt och okomplicerat, något det inte är. För faktum är att varje diskurs, varje ”.dis” innehåller ett mycket stort antal andra diskurser, importeringar från diskurser och anspråk på att skapa nya diskurser utomstående originaldiskursen. Precis på samma sätt som varje datorprogram består av en uppsjö av filer, referenser, funktionsimporteringar och mindre program som sedan tas upp i det större. Det är ännu en gång samma princip, men med en stor och för diskurserna extremt viktig skillnad:
4.2.1 Programmering är en diskurs, men diskurser är inte programmering
I datorprogrammen finns det ett slutgiltigt, allomfattande program, som alla andra mindre program körs i. Kalkylatorprogrammets princip finns t.ex. i Excel, Excel finns i ett ramverk av andra program, och alla dessa program existerar som processer under ett operativsystem. I diskurserna finns inte denna hierarki. Tvärtom är alla diskurser likvärdiga, alla ”.dis” kan importera och exportera och skapa hur de vill, utan krav på att vara allomfattande – faktum är att de omöjligt kan vara det. Det finns alltså ingen omslutande diskurs, ingen meta-diskurs, inget ramverk och inget operativsystem. Det finns bara diskurser i relation till andra diskurser. Vår ”politik.dis”, i vilken vi pratade om hur begreppet ”kvinna” styrs av olika diskurser, är också den full av diskurser, underordnad andra diskurser etc. Innebörden av begreppet ”politik” diskuteras i andra diskurser precis på samma sätt som begreppet ”kvinna” diskuteras i vår ”politik.dis”. Verkligheten är alltså ett virrvarr av diskurser, vilket gör diskursanalys ett ganska komplext förehavande – dock är diskursens princip nästan lika enkel som programmeringens grundlogik. Det är mångfaldigandet av diskurser, inte diskursprinciper, som gör det hela komplicerat. Men det gäller såklart bara min definition av ”diskurs” – alltså den i ”anders.dis” – diskursbegreppet själv är i allra högsta grad utsatt för diskurspåverkan och förändring, precis som alla andra begrepp… och diskurser.

There are 5 Comments to "Diskursprogrammering 2.0"
stavfel: ingen meta-diskurs, ingeR ramverk och inget operativsystem.
annars; bra och intressant text. jag fann mig lite för fokuserad på skillnaderna på python och diskurs, men det var en bra liknelse. antagligen bättre för någon som inte är pythonprogrammerare.
Ja, jag tror faktiskt att det är precis så också. T.o.m. jag blev lite irriterad på mina förenklingar. Tack för korren!
Vad ville du med texten? Det är bara om du ville för mycket med den som den är begränsad.
Tycker den funkade som en grundläggande introduktion och problematisering av diskursbegreppet. För att även om man inte är haj på programmering tror jag man får fram vad du vill säga.
Enkelheten i den är dess styrka. Du får skriva en tredje version av texten om du vill gå djupare in på ämnet.
När jag skrev den, så skrev jag den för att förklara och bena ut saker för mig själv. Jag satt samtidigt och höll på med Python, vilket gjorde att jag kunde se likheter i grundläggande logik. Delvis var det mest för att analogin är rolig (men, erkänningsvis, haltar lite i praktiken).
Jag tyckte det var kul läsning. Påminner om hur jag fick vg på min grundkurs i logik.