Først en historie 🚀
4. juni 1996. Ariane 5 løfter fra bakken i Fransk Guyana. Trettini sekunder senere er raketten borte, sammen med de fire satellittene om bord. Regningen kom på rundt 370 millioner dollar.
Motorene virket. Styringen virket. Koden gjorde nøyaktig det den var skrevet for å gjøre.
Det som sviktet, var et tall. Farten til raketten skulle flyttes fra én måte å lagre tall på, til en annen med litt mindre plass. På den forrige rakettmodellen holdt det med god margin, for den fløy aldri fort nok til at det ble trangt. Denne fløy fortere.
Tenk på et skjema med fire ruter til postnummeret. Det fungerer helt fint – helt til noen trenger fem.
Og det rareste av alt: akkurat den kodebiten gjorde ingenting nyttig der og da. Den var en rest fra en rutine som skulle vært slått av før oppskytingen. Et menneske hadde bestemt hvor mye plass tallet skulle få, og det valget var riktig i mange år.
Hva kommer forelesningen til å handle om?
Vi skal se på hvordan maskinen representerer alt den jobber med, og hva som skjer den dagen representasjonen ikke strekker til. Vi vil blant annet se på:
- Hvorfor et bitmønster ikke betyr noe som helst før noen har bestemt hvordan det skal leses
- Hvordan tallsystemer henger sammen, og hvorfor heksadesimal i det hele tatt finnes
- Hva som faktisk skjer med et tall som ikke får plass
Hvorfor tekst, bilder og lyd til slutt viser seg å være det samme problemet
Et lite tankeeksperiment
Her er åtte bit: 01000001
Det kan være tallet 65. Det kan være bokstaven A. Det kan være en mørk rødtone. Det kan være en ordre til prosessoren.
Hvilken av dem er det?
Alle fire er «riktige» – akkurat som de tre hjertene fra forrige forelesning. Og det som er litt ubehagelig: bitene selv sier ingenting om hvilken av dem som gjelder. Noen må ha bestemt det på forhånd.
Undring og refleksjon
Her er noe å tenke på før og under forelesningen. Du har sikkert sett Gjøvik i en e-post, eller et navn som plutselig ble til tegnsuppe. Kanskje har du også lagt merke til at 0.1 + 0.2 ikke gir 0.3 i Python. Små og dumme feil, ser det ut som.
Men hvorfor skjer de i det hele tatt? Hvorfor klarer ikke en maskin som kan styre en rakett å legge sammen to desimaltall riktig? Og hvis et bilde og en sang begge bare er bit – hva skjer egentlig hvis du åpner en bildefil i en musikkavspiller? Protesterer maskinen, eller gjør den som den får beskjed om?
Det siste prøver vi i salen.
Hva du får igjen for å komme
Forelesningen tar innsiktene, ikke framgangsmåtene. Hvordan du konverterer mellom tallsystemer, hvordan du regner med negative tall, hvordan et flyttall er satt sammen felt for felt – alt det står i kapittel 2 i kompendiet, og det blir stående der. Timene bruker tiden på hvorfor, slik at kapitlet blir mye lettere å lese etterpå. Du taper altså ingenting på å la pennen ligge og heller følge med.
Midt i hver time setter vi av sju minutter til Universet, med oppgaver som er skrevet til nettopp denne forelesningen. Dere jobber individuelt, og dere får oppgavene på deres egen maskin, så ta med datamaskin. Det dere står fast på mens dere jobber, tar vi i spørsmålsrunden rett etterpå. Den er det satt av god tid til.
Til slutt
Du trenger ikke kunne noe av dette på forhånd, og det er helt greit om ikke alt setter seg med en gang. Dette er stoff som modnes gjennom semesteret. Så vær nysgjerrig og still spørsmål underveis – og neste gang du ser en rar bokstav dukke opp i en e-post, vet du hvor du skal begynne å lete.
Vi sees i forelesningen 😎