Hvad er datalogi egentlig for noget?

Denne artikel skrev jeg efter invitation til Scient. De naturvidenskabsstuderendes blad p?? K??benhavns Universitet. Da den blev bragt i bladet januar 2007, var det imidlertid i en besk??ret version. Her er s?? den samlede artikel.

Hvorfor er det ikke nok at kunne taste sine data ind i programpakker, hvis man vil lave noget alvorlig naturvidenskab? Svarene p?? de to sp??rgsm??l h??nger sammen.

Computere er en fantastisk gave til naturvidenskab.

Man kan l??re om datalogi p?? forskellige niveauer.

I f??lge min egen definition er datalogi l??ren om hvordan man p?? samme m??de den ene gang efter den anden kan danne r??kker af tal og bogstaver ud fra eksisterende r??kker af tal og bogstaver. R??kker af tal og bogstaver kan repr??sentere m??leresultater, digitale billeder, MP3-filer eller alle de h??rdt optjente goder i et multiplayer rollespil. Faktisk alle de former for data som vi kan behandle maskinelt. N??r vi behandler dem, betyder det derfor helt konkret, at vores program styrer dannelsen af nye r??kker af tal og bogstaver ud fra eksisterende r??kker af tal og bogstaver.

Det er princippet i Turing-maskinen, hvor Alan Turing allerede i 1936 pr??senterede det teoretiske grundlag for vore dages computere. Der var blot den lille forskel, at hans maskine kun kunne h??ndtere en enkelt r??kke af tal og bogstaver som selv styrede hvordan maskinen skulle ??ndre eller skrive til den. R??kken af tal og bogstaver var alts?? p?? samme tid program og data.

Turing-maskinen var et rent tankeeksperiment, men siden har vi udviklet computere som meget hurtigt kan danne r??kker af tal og bogstaver ud fra eksisterende r??kker af tal og bogstaver, og som kan g??re det uden at lave fejl.

Det er praktisk indenfor naturvidenskaben, hvor man ofte har brug for at skulle bearbejde en hel masse data - alts?? stykker af en r??kke med tal og bogstaver ?? p?? pr??cis samme m??de. Det er en proces som minder lidt om guldgravere som gennems??ger store m??ngder sand og grus for at finde et enkelt guldkorn. F??rst skal man have samlet alle sine data, og derefter skal man have udvundet de guldklumper som man kan konkludere ud fra. Det kan helt enkelt ske ved at man udregner gennemsnittet af tallene fra hvert af sine fors??g, i stedet for at pr??ve at regne videre p?? samtlige tal fra alle fors??gene.

Andre gange er man n??dt til at frasortere alle de data som ikke har noget at g??re med det problem, som man vil unders??ge. Det kr??ver nogle gange at man laver nogle visualiseringer, s?? man lettere kan se hvor guldklumperne gemmer sig. Ofte vil man i dag slutte med at lave en model af virkeligheden som er baseret p?? ens data, og som skal vise om man faktisk har fundet guld eller bare nogle ideer der glimter.

Computere er en fantastisk gave til naturvidenskab.

Hvis omformningen af en r??kke tal og bogstaver til en anden r??kke af tal og bogstaver skal foreg?? med h??ndkraft, er det n??sten lige s?? slidsomt som at st?? i en iskold flod med vand op til kn??ene og b??je sig ned den ene gang efter den anden efter sand og grus som man sigter i h??bet om at finde en lille klump guld. Mens man ved at en enkelt fejl eller et lille ??jebliks uopm??rksomhed kan betyde at man overser en guldklump.

Der er bare et problem. Hvor beregninger med h??ndkraft er lige s?? fleksible som en guldgraver med sin hakke og sigte, er de r??kker af tal og bogstaver som vi kalder programmer lavet til nogle begr??nsede form??l. Det betyder, at man ofte kommer i den situation, at man ikke lige kan finde et program som kan bruges til at udvinde guldklumperne fra netop det bjerg af data som man er i gang med at gennems??ge. Derfor er naturvidenskabelig forskning i dag ofte afh??ngig af at man kan udvikle programmer, som kan lave netop de omdannelser af r??kker af tal og bogstaver som man har brug for. Eller i hvert fald at man kan beskrive hvad man har brug for s?? pr??cist, at andre kan udvikle det. P?? pr??cis samme m??de som meget naturvidenskabelig forskning de sidste tre hundrede ??r har v??ret afh??ngig af hvem der havde de bedste instrumenter.

Der er et andet problem. Som forsker er man afh??ngig af at programmerne ikke regner forkert, pr??cis ligesom man er afh??ngig af at ens instrumenter viser rigtigt. Derfor er man n??dt til at vide hvordan man sikrer at programmerne danner r??kker af tal og bogstaver p?? den m??de som man forventer, s?? de epokeg??rende sammenfald man har opdaget, ikke skyldes at en variabel et sted er blevet erstattet af en konstant. Her har det traditionelt st??et d??rligt til. Forskere, som g??r meget for at sikre sig at deres instrumenter m??ler rigtigt, har ikke altid set behovet for at sikre at deres software regnede rigtigt, eller l??rt hvordan de skulle dokumentere det.

Til geng??ld kan man som forsker g??re det som en guldgraver normalt kun vil dr??mme om i en brandert. Man kan lave modeller og simuleringer af virkeligheden. Man kan skabe sit eget bjerg, som man derefter kan finde guldklumper i, og hvis man er utilfreds med udbyttet, kan man endda ryste bjerget en smule og se om der kommer mere guld til syne. Man kan afpr??ve sine teorier ved at lave modeller og se om deres opf??rsel passer med virkeligheden, og man kan bruge modellerne til at simulere fors??g som det vil v??re tidskr??vende, umuligt eller direkte umoralsk at lave i virkeligheden. Det er en v??sentlig del af det der kaldes eScience.

Man kan for eksempel lave en model af hvordan kemiske stoffer p??virker mennesker, og bruge modellen til at afpr??ve virkningen af et stort antal stoffer, som man aldrig kunne f?? lov til at fodre en gruppe mennesker med. Her har man i princippet en r??kke af tal og bogstaver som repr??senterer en model af stoffernes virkning og nogle andre r??kker af tal og bogstaver som repr??senterer de enkelte stoffers egenskaber. Dem bruger man s?? til at styre hvordan man ud fra modellen skaber nye r??kker af tal og bogstaver som repr??senterer det enkelte stofs virkning.

Man kan l??re om datalogi p?? forskellige niveauer.

Det enkleste niveau svarer til et PC-k??rekort hvor man kan skrive sine egne rapporter p?? en computer og lave beregninger i et regneark. P?? n??ste niveau kan man anvende en database eller et standardv??rkt??j til behandling af sine data eller til opstilling af modeller. Det niveau svarer til et videreg??ende laboratoriekursus, og det vil i fremtiden nok v??re n??dvendigt for de fleste naturvidenskabelige studerende. Derefter kommer det niveau hvor man selv kan definere kravene til et nyt program og kontrollere at det fungerer korrekt. Det er n??dvendigt for dem der skal lede projekter og v??re ansvarlige for den software som anvendes i dem.

Endelig er der dem p?? det h??jeste niveau, som selv kan analysere problemstillinger og designe software til at l??se dem, og som selv kan programmere og teste softwaren. Det er en uvurderlig fordel p?? de omr??der hvor en del af forskningen best??r i at man hele tiden udvikler og afpr??ver nye modeller, men ikke har prioriteret at ans??tte en programm??r til at lave den software som man har brug for. Eller i de tilf??lde hvor det kan v??re langt hurtigere selv at eksperimentere sig frem, i stedet for at skulle forklare en anden hvordan hver ny version af softwaren skal laves.