Hur tänker programmerare?

Simon Winter skrev på Twitter att han skulle vilja läsa om hur programmerare tänker ”när de bygger upp digital infrastruktur”. Jag försökte svara på Twitter men tyckte det blev svårbegripligt. Då kom jag att tänka på följande text jag skrev häromåret.

”Vi börjar med ingenting. Men vi behöver en soffa. Det ska vara en tresits- och den ska vara grå. Vips! Vi har ett objekt och det är en soffa och den är grå och den är tresits- och den finns i vårt ingenting.

”Men vi behöver också ett rum. Ett rum kan innehålla soffan. Frågar jag rummet vad det innehåller får jag svaret soffan. 

”Vad ska vi ha mer? Ett soffbord? Då får vi göra soffan till ett slags föremål och säga att rummet i stället kan innehålla föremål. Och soffbordet: det är också ett föremål och därmed kan vi ha det i vårt rum. Vilka föremål finns i rummet? Soffan och soffbordet!

”Sedan behöver vi dig. Du är spelaren. Du är i rummet. Men du är inte ett av föremålen. Som spelare är du i ett rum och rummet innehåller föremål. Du kan fråga rummet vad det innehåller och du får veta att det finns en soffa och att det finns ett soffbord. Vill du sitta på soffan? Då måste vi först ordna så att du som spelare kan sitta på föremål. Och kanske att föremål kan bli suttna på. Om en annan spelare kommer in i rummet så kan rummet berätta att där finns ett soffbord och en soffa; och soffan kan berätta att den är grå, tresits- och att den är sutten på av en spelare (du).

”Kommer in i rummet förresten – vart då ifrån? Från ett angränsande rum? Så rum har alltså angränsande rum. Hur många då? För enkelhets skull kan vi säga fyra – ett i varje väderstreck. Norrut från rummet med soffan och soffbordet finns ett angränsande rum. Går du dit finner vi att det innehåller en spis. En spis är ett föremål och kan således finnas i ett rum. Kan den bli sutten på? Ja, förvisso. Men viktigare är att den kan sättas på och stängas av. Frågar du spisen kan den svara huruvida den är på eller av. Hade vi bara en kaffepanna kunde du göra kaffe.”

Jag skrev det här när jag funderade på att delta i National novel writing month förra året och ville se hur många ord jag kunde pressa ur mig per dag (det krävs ett snitt på 1667 stycken). Då kom alla möjliga texter ur mina fingrar. Även följande stycke som också passar här.

”Kod. Hela dagarna skriver jag kod. Och kod är text på sätt och vis. Den kommunicerar med maskinen och instruerar vad den ska göra. Men i ännu högre grad kommunicerar den med de människor som läser den. Den måste förstås: intentionerna bakom, syftet som ska uppnås. Den måste också vara syntaktiskt och semantiskt korrekt; den måste förstås av maskinen – ingen tvetydighet. Och för att det ska bli bra måste den vara ordnad på ett logiskt satt; rätt sak på rätt plats – och bara på en plats, inga upprepningar. Men det är inget krav maskinen ställer utan en förutsättning för att koden ska kunna leva. Man måste kunna arbeta med den under lång tid och varje gång man återvänder till ett stycke kod måste man begripa varför den ser ut som den gör och hur den hänger ihop med allt annat.”

(Simon sammanställde sina svar och reflekterade vidare.)