Skillnaden mellan modell, algoritm och programmering

 

Inom Digital humaniora talar man ibland om värdet av programmering som ett idag viktigt komplement till vanliga humanistiska kompetenser. Inom naturvetenskap och teknik klingar emellertid inte programmering särskilt väl. Där är det snarast ett lågstatusarbete, för ungdomar och till arbetsplatser nyanlända. När man har mer erfarenhet och kunskap ägnar man sig åt mer abstrakta saker – som man talar om i termer av design och konstruktion, av system. Programmering har istället att göra med implementation, att göra det som andra tänkt ut konkret verkligt.

Jag tror att även det mer abstrakta arbete som utförs inom det naturvetenskapliga området behöver begripas av humanister, om de skall kunna dra ordentlig nytta av programmerandet. Annars överlåter man sig åt andras ”systemdesign”.

En viktig distinktion i sammanhanget är den mellan modell och algoritm.  Jag är ingen expert på dessa saker. Jag tycker mig ha en sorts hantverkskunskap på området – tillskansad genom praktisk erfarenhet huvudsakligen i tonåren. Expert är tex. Dag Wedelin. Titta gärna på hans  presentation av kursen Mathematical modelling and problem solving. Men även som simpel hantverkare tänker jag att man skall få försöka förklara. Också för att jag gärna vill sätta igång en liten diskussion om de här sakerna. Frågor välkomnas.

Modell

En modell är en förenklad kopia av ett stycke verklighet. Lite som en tavla.  Oftast skapar man en modell med ett visst syfte i åtanke. En konstnär kanske vill framhäva karaktärsdrag i ett porträtt.

Weberska idealtyper är modeller av verkligheten.

I ”The death of the object” förklarar Theodor Porter att modellen som idé slog igenom i naturvetenskapen strax före sekelskiftet. Modeller bär inte på några ontologiska anspråk. De fyller ett instrumentellt syfte. Något som paradoxalt nog inte hindrar att de sedan omtolkas ontologiserande – som vi gjort med atomer, och kanske elektromagnetiska fältlinjer – eller för den delen Pierre Bourdieus rum, positioner och kapitalformer.

Ett väldigt viktigt steg när man försöker lösa ett problem med hjälp av matematik består i skapandet av en lämplig matematisk modell.

Antag att vi – med lite ironisk distans till digital humaniora – undrar vilka författare som skriver längst böcker. Om vi skall använda den matematiska metoden måste vi då börja med att fundera över vad vi egentligen menar med en boks längd, vi måste definera begreppet. Syftar vi på antalet tecken? Antalet ord? Antalet sidor? Tittar man noga på böcker visar det sig även att böcker ofta innehåller en hel del både tecken, bokstäver och sidor som egentligen inte hör till själva berättelsen. Så är det till exempel med texten på baksidan och med sidnumren. Här är en möjlig definition: En boks längd l= det totala antalet bokstäver på alla bokens sidor, inklusive fram och baksida. Skulle vi vara noga skulle vi också definiera vad vi menar med en ”bokstav”, men jag tror att poängen går fram. Notera här att vi alltså inte räknar varken siffror eller skiljetecken!

För att besvara frågan om vilken författare som skriver längst (jag tänker på Kurt Olsson, som frågade Patrik Sjöberg hur brett han hoppat) kan böcker lämpligen modelleras som en mängd bokstäver, där det enda vi behöver veta är vad som är en bokstav och vad som inte är det.

Kanske är det förresten lite intressant att även försöka definiera vad en bokstav är – eftersom man då märker hur komplicerat allting blir om man försöker vara noga. Inom matematiken talar man om en mängd som en grupp av element. Vi kan till exempel definiera mängden B av alla bokstäver som:

    \[ B=\{ a,b,c, \ldots , A, B, C, \ldots Å,Ä,Ö \} \]

Med denna definition är det viktigt att notera att vi till exempel inte har med é, som därför inte kommer att tas med när man räknar ut böckernas längd. Spelar det någon roll? Detta är precis den fråga som man måste ta ställning till när man modellerar! Och poängen med att tydliggöra modelleringssteget är att man får klart för sig vad man gör. Om böckerna man skall mäta längden av är på olika språk är det förmodligen viktigt att man får med alla de bokstäver som används i alla språken. Men hur skall man göra om några av böckerna är skrivna på kinesiska eller japanska?

Och vad med om en bok blir längre eller kortare när den översätts mellan olika språk? Om ett visst språk tenderar att i vara mer ”kompakt” i allmänhet? Jag tror att en vanlig erfarenhet av att försöka vara exakt är att man märker att sådant som i förstone framstod som trivialt visar sig vara ganska trixigt.

Detta om modell.

Algoritm

En algoritm är ett recept. Den säger hur man gör något, och ofta säger den det relativt noga. En algoritm består av en sekvens enkla steg. Hur enkla är, tänker jag, en öppen fråga.

Om jag skulle skapa en algoritm för en människa, för att besvara boklängdsfrågan, skulle jag kanske säga att de skulle börja på framsidan och räkna hur många bokstäver det finns där, anteckna, och sedan fortsätta på samma sätt med alla andra sidor i boken. Och på slutet lägga ihop.

En lite mer utförlig algoritm, som involverar datorer, skulle vara: (1) ta boken till en kopiator, (2) scanna in den, (3) göa OCR, (4) ta bort bort alla tecken som inte ingår i vår bokstavsdefinition M

Men här har stegen blivit ganska långa. Varje steg i dessa instruktioner innefattar var för sig en mängd mindre steg.

Ett exempel på algoritmer, som Dag Wedelin använde i sin förklaring på Jonsereds herrgård (ca 44 minuter in i filmen), beskriver hur man sorterar. Det är såklart ett nödvändigt steg i en algoritm som besvarar frågan om hur långt olika författare skriver. Man kan sortera på jättemånga olika sätt. Wikipedia
listar nästan 30 olika sorteringsalgoritmer. Varje algoritm kan beskrivas som en sekvens av enkla steg, som ofta innefattar att man jämför två väl valda element med varandra och sedan gör en sak med det större elementet och något annat med det mindre.

Om man tänker stort kan man tänka sig en algoritm för boklängdsfrågan som innefattar allt från att digitalisera böcker till att sortera dem utifrån deras ”längd”, så som vi definierat detta begrepp.

Programmering

Problemet med algoritmer, om man säger så, när det gäller datorer, är att datorerna inte kan förstå dem utan vidare. Man måste prata med dem på deras ”språk”, så kallade ”programspråk”. Vad en programmerare behövs till är därför att översätta en algoritm till ett datorprogram. Detta kallas implementering.

Man kunde tro att detta programmeringssteg spelar jättestor roll för hur lång tid det tar att lösa ett visst problem, men så är det i allmänhet inte. Hur lång tid saker tar bestäms huvudsakligen av modellen och av algoritmen. Egentligen är det faktiskt modellen som är mest avgörande, den som säger vad det är man arbetar med. En komplicerad modell kräver en komplicerad algoritm. Men givet en viss modell finns det ofta en mängd olika algoritmer som, mer eller mindre exakt, kan lösa problemet mer eller mindre snabbt och effektivt. Massor av människor jobbar med att hitta på klyftiga algoritmer, och när det gäller sådant som man vill göra ofta – som sortering – kan man vara rätt trygg med att den algoritm som en datorprogram använder är väldigt effektiv.

Datorprogram fungerar i allmänhet så att de utnyttjar så kallade bibliotek där algoritmer finns implementerade. Så kan man helt enkelt skicka sin lista med längder till en funktion i ett sådant bibliotek, och få tillbaka dem i ordning. Eller så har programmeringsspråket självt en sorteringsfunktion inbyggd – som i sin tur kanske anropar ett sådant bibliotek. I Mathematica, som jag själv använder, skriver man till exempel bara Sort[list], där ”list” innehåller listan med element som man vill sortera. Ut kommer den sorterade listan. Men under huven används någon av alla de algoritmer som listas på Wikipedias sida.

Så på ett sätt är programmerandet ett inte särskilt intressant steg i frågebesvarandet.

Men på ett annat sätt är programmerandet jätteviktigt – nämligen när datorprogrammet inte egentligen skall lösa ett problem, utan snarare fungera som ett verktyg för en människa. Då är det helt avgörande vad människan måste göra, för att få datorn att göra det hon vill.

När programmet bara skall besvara frågan en gång, är programmeringsspråket mest en fråga om smak och bekvämlighet, i praktiken en fråga om vad man är bekant med, i kombination med frågans karaktär.

Tanke

Min tanke är att framför allt frågan om modell, och om modellering, nog skulle kunna få större plats inom humaniora och digital humaniora – det vill säga ett arbete som skiljer sig från det gängse humanistiska men som inte involverar programmering och datorer, och kanske inte ens något digitalt om man inte tänker brett kring denna term. Jag tror att det skulle vara nyttigt att tänka mer på vad det egentligen är för fråga man vill ha besvarad, och vilka aspekter av det man studerar som är väsentliga för denna fråga. Kanske kunde man experimentera med att ställa upp dessa aspekter på något sätt matematiskt. Då tror jag frågan om algoritmen skulle kunna ställas på ett nytt sätt. Och på samma sätt frågan om själva datorprogrammet.

← Tidigare inlägg

Följande inlägg →

5 Kommentarer

  1. … ska man tänka sig att man bestämmar sig för vad modellan av verkligheten ska inkludera, alltså att man sättar en regel för att modellen av längd-på-boken innefattar t ex fram-och baksida, förord mm. När man har bestämd vad modellen ska visa (och inte visa), tar man ställning till hur den bilden ska skapas. Tänkar att man på denna nästa nivå skapar en regel (metod) för att sätta ihop modellen… förhåller man sig till och bestämmer villkoren för modellen? Det här med programmet som ska översätta algoritmer till datorspråk är hokus pokus för mig.

    • När det gäller modellen så har du helt rätt – man skapar en sorts regel för vad som skall vara med i modellen och vad som lämnas utanför.

      När det gäller algoritmen så har du rätt i att man ju först behöver ett recept/algoritm för att ”skapa” bilden, det vill säga, fylla den med empiriskt innehåll, gå från verkliga böcker till ”böcker som längder”, enligt definitionen.

      Fokus, när det gäller algoritmer, brukar emellertid snarare ligga på hur man tar sig från modellen till ”svaret”. I vårt fall hur man tar sig från en osorterad lista med längder, eller en sorterad lista.

      På gott och ont visar just det här exemplet att det ju också är en massa annat som måste göras – som man kan formulera algoritmer för – än just bara sorterandet.

      Tack för bra fråga!

  2. Aant har en bra text om medicinens vetenskapsideal där modeller spelar en avgörande roll. Kan vara bra att ta spjärn mot.

    ww2.lakartidningen.se/ltarkiv/1999/temp/pda19882.pdf

    /Gustaf

    • Tack Gustav! Ja, det var definitivt en användbar artikel. Aant skriver mot slutet: ”Tendensen att förväxla modellvärlden med verkligheten är något som bidrar till totalisering av en viss systemnivå, utifrån vilken man sedan och i dess termer vill konkretisera allt övrigt existerande. Den amerikanske vetenskapsfilosofen Alfred North Whitehead kallade denna fallgrop för malplacerad konkretisering”. Detta är ju också (ungefär) vad Heidegger kallade onto-teologi. Jag tror att dessa speciella ”användningar” av modeller gett dem lite dåligt rykte. Som om de på något sett ledde till en endimensionell förståelse av världen, som stod i motsats till det humanistiska, bildade, rika, mångfacetterade osv.

      Tänker man så går man miste om ett kraftfullt redskap för att just berika sin omvärldsuppfattning.

      Och än mer problematiska konsekvenser får tänker jag avfärdandet av ”reduktionismen” när man vill behålla sin humanistiska nyansrikedom samtidigt som man vill dra nytta av teknik. Som om man kunde skydda sig från reduktionism genom att undvika matematiken. Något som kanske lockar dubbelt, eftersom matematiken utöver att förknippas med reduktionism också är lite skrämmande…

      Faktum är att detta resonemang passar ganska bra med hur humanister – tycker jag det verkar som – ibland mycket hellre vill använda krånglig matematik än enkel. Detta är såklart för att undvika reduktionismen och behålla världens mångfald.

  3. Lars Mouwitz

    Intressant text! En liten fundering angående ditt exempel om den längsta boken: Anta att den ursprungliga forskningsfrågan var ”Vilken är den viktigaste boken?”, då hade ju modellen som mäter antal bokstäver varit tämligen missvisande. Även om modellen i sig inte har några ontologiska anspråk så kan mycket väl (det outalade) kravet på matematisering ha det. Matematik som ett adelsmärke för ”vetenskaplighet” eller matematik som ”naturens språk”. Men liksom alla andra språk skapar matematik också en tystnad, en domän som inte kan begreppsliggöras med språkets vokabulär.
    Inte minst inom samhällsvetenskap och humaniora kan denna ängsliga matematiseringsiver göra att vi inte ställer eller får grepp om de viktigaste frågorna.

Kommentera