tirsdag 26. april 2016

John MacCormick: 9 Algorithms That Changed the Future

Hva er et egentlig datamaskiner og dataprogrammer gjør og som har fått så enorm betydning i samfunnet vårt? Det er dette forfatter John MacCormick er opptatt av å forklare i denne boken, og som han mener det er  nødvendig at også ikke-spesialister lærer mer om, på samme måte som vi lærer en del grunnleggende fysikk, kjemi og biologi på skolen, men ikke så mye "computer science", eller informatikk som det gjerne kalles på norsk.

MacCormicks utgangspunkt er at å lære grunnleggende informatikk ikke er det samme som å lære å bruke Windows, tekstbehandlingsprogramvare, fotoredigeringsverktøy eller et regnskapsprogram. Dette er verktøy for å løse andre oppgaver bedre, ikke faget. Og boken er heller ikke opptatt av å forklare hvordan elektronikken virker eller beskrive hvordan man skriver programvare.

Det boken "9 Algorithms That Changed the Future" handler om er hva datamaskiner faktisk gjør. Eller for å si det på en annen måte: Når vi har disse raske og kraftige maskinene og vi har folk som kan skrive glimrende programvare, hvilke grunnleggende ideer er det som finner sin løsning gjennom presise prosessbeskrivelser, såkalte algoritmer, og som gjør det mulig å gjøre ting vi ikke kunne gjøre før? Boken tar for seg ni slike prosessbeskrivelser, eller algoritmer, som brukes av datamaskiner hver dag og som har bidratt til å forandre verden. De er av litt ulik karakter, men har det felles at de løser virkelig problemer og brukes av veldig mange brukere hver dag.

Gjennomgangen av de ni algoritmene begynner ganske grunnleggende med å gå igjennom prinsippene som brukes av søkemotorer og hvorfor det er slik at vi får opp en relevant liste over treff når vi søker etter nåla i høystakken på internett, blant annet gjennom algoritmer som holder orden på hvor i setninger og hvor på nettsiden ordene vi søker etter befinner seg. Andre algoritme som beskrives er PageRank, den som skapte Google og som holder orden på hvor viktig en nettside er ved å holde orden på hvor mange som lenker til den og hvor autoritative disse lenkene er. Er det slik at nettsiden din lenkes til av det som i følge PageRank er viktige nettsider, kommer den høyere opp når noen gjøre et søk.

Tredje tema er såkalt PKI, prinsippene som gjør det mulig å kryptere informasjon som sendes over nettet på en slik måte at avsender og mottaker kan stole på at bare de har nøkelene som skal til for å se bestemte ting som ikke er tilgjengelige for andre. Dette løses gjennom at det er en offentlig nøkkel som alle kan se som må kombineres med en privat nøkkel som bare du kjenner. Men det krevende her er finne måten man kan bruke det åpne nettet til å utstyre rett person med rett privat nøkkel, og vite at det ikke er noen andre som får tak i den. Her gir boken en pedagogisk og fin forklaring på hvordan man ved å bruke noen grunnleggende lover fra matematikken har løst dette problemet.

Fjerde algoritmetype løser problemer knyttet til feil i data som sendes over nettet og sørger for feilretting. Feil er helt vanlige og kan for eksempel oppstå på grunn av dårlige linjer eller problemer med mobildekningen. Dersom feilene gjorde at dataene ble verdiløse og mottaker ikke kunne bruke dem ville veldig mye datakommunikasjon stoppe opp. Men gjennom enkle teknikker, for eksempel å sortere data i tabeller og regne ut tversummer som sendes sammen med dataene, kan man identifisere akkurat hva som er feil, fjerne feilene og øke produktiviteten kraftig.

Femte tema er metoder for mønstergjenkjenning og prediksjon basert på læring fra tidligere erfaringer.  Blant annet tar boken for seg hva slags prosesser som kan brukes for å få en maskin til å lære å lese håndskrift eller gjenkjenne en person på et bilde, og hvordan dette er videreutviklet til prosessene som ligger bak såkalt kunstig intelligens, som kan brukes på en rekke ulike områder. Sjette tema er komprimering av data, en helt grunnleggende og veldig viktig teknikk for å kunne flytte store mengder data ved å spare båndbredde. Boken går både igjennom såkalt "lossless" komprimering, der alle dataene er intakte når man pakker dem ut igjen, selv om det har vært kraftig komprimert, og komprimering der noe går tapt, som JPEG billedfiler og MP3-musikk som innebærer et tap, men der det i mange sammenhenger ikke er slik at man merker det eller at gevinsten likevel er større enn kvalitetstapet.

Syvende tema handler om databaser og hvordan algoritmer sørger for at dataene i databaser er konsistente, for eksempel om man skulle oppleve et strømbrudd akkurat når man betaler regninger i nettbanken eller andre ting som reiser spørsmål om en endring er gjennomført eller ikke. Åttende type algoritmer handler om såkalte digitale signaturer, som er beslektet med digital autentisering gjennom PKI, men som særlig handler om at du har noen "låser" og noen "nøkler" som passer sammen og som gjør at nettsider og nedlastet innhold er digitalt signert, slik at man vet at det er det avsenderen påstår og ikke er noe forfalsket eller skadelig. Her er det en ganske lang teknisk forklaring på hvordan en bestemt matematisk metode brukes i RSAs digitale signaturer. for å sikre at de ikke kan knekkes.

Niende og siste kapittel med eksempler på algoritmer som forandrer verden er helt annerledes og beskriver hvorfor det rent prinsipielt er noen grenser for hvilke problemer datamaskiner kan løse. Jeg skal ikke gå dypt inn i det resonementet her, men nevne at som eksempel bruker forfatteren en beviskjede som viser at man kan ingen programvare er i stand til å avdekker alle feil i annen programvare, for eksempel feil som gjør at datamaskinen kan krasje.

Dette er ikke boken for de som har informatikk som fag og jobber med disse tingene til daglig. Samtidig er den såpass komplisert og opptatt av matematisk metode at den ikke passer for alle. Men har er man interessert i temaet og ikke er rett for å gå løs på passe nerdete tenkologisk stoff, som også har stor samfunnsmessig betydning, er dette en fin bok å få med seg.