Ett av grundbegreppen i datoriskt tänkande (computational thinking) är modellen. Ska man koda något måste man skapa en modell av det som kodas.
Ta som exempel Facebooks modell av begreppet "vän". Nuförtiden är det lite mer utbyggt, men grunden i det är egentligen bara en dubbelriktad pekare mellan två noder i nätverket. Mer än så behöver inte datorsystemet veta om de personer som ingår i det sociala nätverket. (Jag och Per skriver om det ingående i Digitalis filosofi, redan i första kapitlet)
Har man sen ett nätverk av sådana noder kan man göra en massa analyser av hur de hänger samman. Ett exempel som är tillgängligt för de som har ett Facebook-konto (och data i form av "vänner") är Wolfram|Alphas Facebook-rapport. Den ger förvånansvärt mycket information om hur ens eget sociala nätverk är strukturerat -- information som man kanske hade en aning om, men som blir mycket tydligare när man ser det visualiserat.
Det blir riktigt läskigt hur tydligt klustren i Facebooknätverket svarar mot sociala sammanhang i den fysiska världen. Både självklart och oväntat...
Kristoffer tipsade mig om en fantastisk MOOC-kurs om modelltänkande som går igenom det här sättet att se på olika sammanhang, och det begrepp jag fastnade för var Schellings segregationsmodell, så som den beskrivs i den här extremt lärorika 11-minuters-föreläsningen.
Föreläsningen går igenom hur en stad kan bli extremt segregerad utan att invånarna egentligen har så mycket emot att bo nära någon inte är som de själva (vad gäller inkomst, etnicitet eller liknande). Så här ser den etniska segregeringen ut för New York:
Det som föreläsaren Scott Page gör är att efter en modell från Thomas Schelling skapa en modell, som förstås är en förenkling av verkligheten. Modellen består av agenter, deras beteenden, och de konsekvenser som blir när man ser på deras aggregerade beteenden, i det här fallet som pluttar i ett rutmönster.
Varje person/familj representeras som en ruta, där man tittar på om personen X har grannar som är som en själv, eller olika.
I det här exemplet är personen röd, och har tre lika grannar, och fyra olika. Baserat på ens preferenser bestämmer man regler för om personen ska flytta eller bo kvar, baserat på grannarnas likhet eller olikhet. Räcker det med att ha en granne som tillhör samma socialgrupp/klass/ras som en själv för att man ska bo kvar, eller är man väldigt känslig för främlingar i omgivningen?
Det intressanta med modellen är att det visar sig att trots att personerna i populationen är toleranta, så får man en kraftig segregering. Det är lätt att själv ladda ner programvaran NetLogo för att köra simuleringarna, så den här bilden är från min egen körning:
Det är det undre av de två gröna reglagen som styr toleransnivån. Resultatet av simuleringen tolkas som att trots att personen bara önskar att hälften av grannarna är som hen själv, så blir resultatet att 86 % blir lika! En kraftig segregering, alltså, trots toleranta intentioner.
Schellings bok om fenomenen heter Micromotives and macrobehavior, och första kapitlet finns inscannat här som pdf. Det börjar med ett intressant och tankeväckande exempel som jag tror många känner igen sig i -- en föreläsning som Schelling gav där salen hade 12 tomma rader i främre delen, och därefter var den packad från trettonde raden till bakre väggen. :-) Vilka preferenser hos besökarna var det som gav upphov till det aggregerade beteendet?
För många tror jag att det här sättet att tänka på mänskligt beteende känns lite fyrkantigt, kvantifierat och främmande, men när man skapar ett datorprogram är det helt enkelt så här det går till, vare sig man vill det eller inte. Självklart kan man ta med fler egenskaper i modellen, men som jag visade både med Facebook-exemplet och segregeringsmodellen behövs det inte speciellt mycket eller djup information för att få fram slutsatser som är helt oväntade, och där komplexiteten i det aggregerade resultatet inte alls motsvarar enkelheten i det man matar in. (Det är för övrigt kärnan i mycket av det som Stephen Wolfram har byggt upp -- små cellulära automater som genererar komplexa beteenden. Ibland lika komplexa som "livet självt".)
Nästa steg för mig är att fundera på hur modelltänkande skulle kunna läras ut i skolan, och hur man kan föra fram det som en av de viktiga komponenterna i nån sorts "digital kompetens", tillsammans med kodning och visualisering.
/Simon
En lite sidodetalj i sammanhanget är att avsikten med modeller kan skilja sig rätt mycket åt. Dina exempel handlar om modellering för att bättre förstå dynamiken i ett system. En annan avsikt kan vara att skapa förutsägelser, som med vädermodeller eller fartygsskrovsmodeller.
Och en tredje avsikt med modellering som folk inte alltid tänker på är att testa teorier. Ett teoretiskt resonemang är väldigt ofta luddigt, med många underförstådda villkor och annat; när du bygger en modell baserat på teorin tvingas du göra alla sådana villkor explicita, och då blir det snart tydligt om teoribygget håller eller inte. Det här är rätt ofta avsikten med neurofysiologiska modeller till exempel, och modellbyggandet är lika viktigt eller viktigare än att faktiskt köra modellen i slutänden.
Posted by: Janne | 08 april 2014 at 13:25
Ja, sen jag upptäckte den här kursen som satte fingret på en massa jag hade funderat på länge, så tror jag att modelltänkande kan användas till allt!
Posted by: Simon | 08 april 2014 at 19:44
För att vara lite mer seriös -- den här tredje anledningen, om jag förstår dig rätt Janne, är väl till exempel datalogins roll i kognitionsforskningen -- att försöka att faktiskt bygga de modeller av mänskligt tänkande som de andra subdisciplinerna filosoferar fram.
Posted by: Simon | 08 april 2014 at 19:46
Jag som har det datoriska tänkandet väldigt integrerat i min världsbild ser modeller överallt, och de behöver inte alls vara särskilt enkla. Verkligheten i sig är för mig en modell, en modell som framodlats som en del av en process orsakad av att molekylstrukturer som reproduceras blir vanliga (det naturliga urvalet). Inkodad i organsimernas celler.
Posted by: avadeaux | 09 april 2014 at 09:22
Hm... Om vi ska låta den fysiska verkligheten också vara en modell så blir det svårt att avgränsa kursen i modelltänkande...
Jag kan kanske hålla med om din bild av verkligheten, avadeaux, men då behövs det kanske ett annat ord för den sortens abstraktioner som videon handlar om. (Nej, just ordet abstraktion tror jag inte egentligen blir bra heller.) :-)
Posted by: Simon | 09 april 2014 at 09:28
Det behöver ju inte vara något ett problem att ett ord används till olika saker i olika sammanhang (jfr programmering), och mitt exempel är förstås maximalt skruvat. Kanske bör man säga att jag tar modell som en förklarande analogi till en syn på verkligehten, eftersom min användning inte stämmer med att en modell definitionsmässigt (?) måste modellera någonting annat, inte bara emergera genom sin användbarhet.
Kom förresten att tänka på det här gamla blogginlägget där jag beskriver datoriska modeller.
Posted by: avadeaux | 09 april 2014 at 10:31
Ditt blogginlägg var lite för tekniskt för mina syften, men jag skulle definitivt vilja gå åt det hållet i kommande inlägg!
Posted by: Simon | 09 april 2014 at 11:22
Jag tycker i och för sig att abstraktioner och modeller beskriver närbesläktade men olika fenomen. En modell är väl nästan alltid* en abstraktion av någonting, men en abstraktion behöver inte vara en modell. Båda handlar om att renodla vissa egenskaper av ett system på bekostnad av andra. Så en datorskrivbordsmiljö abstraherar en kontorsmiljö; en arkitektmodell abstraherar en byggnad; och en neuron-nätverksmodell abstraherar en krets i hjärnan.
Det jag tycker skiljer dom åt är syftet; en modell är alltid en modell _av_ någonting, och implicerar för mig att du försöker förstå eller belysa systemet på något vis. En arkitektmodell visar hur det riktiga huset kommer se ut** och en nätverksmodell försöker förstå dynamiken i den kretsen. Ett datorskrivbord försöker å andra sidan inte belysa någonting gentemot riktiga kontor. Det bara existerar för sin egen skull.
En sidokommentar: Kan vi inte helt enkelt kalla det "datormodeller", inte "datoriska modeller"? "Datoriskt tänkande" har vi väl inget alternativ till, även om jag kanske gillar "beräkningsbaserat" eller liknande förled lite bättre, men för modeller har vi redan ett okej ord.
* Du kan ju tänka dig en modell av någonting som inte existerar och kanske aldrig kommer att existera. I ett sådant fall blir det lite underligt att tala om att det är en abstraktion tycker jag. Och en mänsklig klädmodell abstraherar väl ingenting heller, fast dom ju är modeller i bemärkelsen ovan.
** nåja...
Posted by: Janne | 10 april 2014 at 04:24
1. Ja, jag har också tänkt mig att en modell är en modell av nånting, men i avadeaux exempel blir det då konstigt att verkligheten (den fysiska) också skulle vara en modell. (Däremot är det inget konstigt att den upplevda verkligheten är en modell, av den fysiska.)
2. Ja, datormodeller är okej som ord för mig, men om vi ändå ska ha ordet datorisk i språket tycker jag inte att vi ska vara rädda för att använda det. Då slänger SAOL ut det nästa gång…
3. Vad gäller arkitektmodeller tycker jag det är ett problem att de alltför mycket visar hur huset blir… Med vissa hus känns det som att det borde ha varit ett steg mellan modellen och förverkligandet, typ ornamentering etc...
Posted by: Simon | 11 april 2014 at 11:53
Datorskrivbordet är ju en modell av den berörbara delen av en dator: dess ansikte och sinnesorgan (hoppsan, en ny modell). Den använder sig av metaforer från ett välkänt område för att göra det den modellerar begripligt, och möjligt att resonera om med mer välbekanta begrepp. Jag håller med om att en modell nog rent definitionsmässigt ska vara en modell av någonting, men måste den vara en renodling? Jag kan nöja mig med att den är en förflyttning som synliggör aspekter ur en annan vinkel.
En datormodell är för mig något som faktiskt används av en dator för att göra en beräkning, men det är inte ett krav på en datorisk modell. På whiteboarden bakom mig finns lite bilder av träd och grafer som jag vill kalla datoriska modeller, men inte datormodeller eftersom de finns där som diskussionshjälp mellan människor. Intressant nog är de ju faktiskt inte direkt modeller av någonting, utan diskussionen gäller modellerna frikopplade från vad de modellerar. Modellen kan i detta fall appliceras på helt olika saker, med bevarade egenskaper. Om man inte ser en graf som en modell av vissa datoroperationer, men då blir det märkligt när man betänker att de faktiskt kan modelleras på olika sätt i ett program. En graf kan t.ex. implementeras med närhetslistor eller en närhetsmatris. Olika datormodeller av den datoriska modell som används för att göra ett datorprograms abstraktioner mänskligt begripliga.
Posted by: avadeaux | 22 april 2014 at 16:29