Kompleksitet i IT: Hvad kan vi lære af fysikken?

En af de emner som vi nok kan frygte mest er kompleksiteten i moderne IT-systemer. Det er et svært emne fordi vi nok alle ved at det "bare" er indbygget i IT-verdenen at kompleksitet er "name of the game". Jeg kom i snak med min gode ven Poul-Henning Kamp for noget tid siden om dette emne - hvor vi havde hver vores indgangsvinkel til det.

Tillad mig et historisk afbræk i næste afsnit...

Tillad mig at gå lidt tilbage. Jeg har altid været optaget af computere, fra Piccolo, Piccoline, og Apple IIc tiden - men min uddannelse har været meget præget af fysik. Fra gymnasietiden på Frederiksværk gymnasium havde jeg den glæde og fornøjelse at lære fysik fra Henrik Svanholt - en fantastisk lærer. På DTU var det især G. B. Jensen, som lærte mig kvantemekanik og fysik generelt - igen en lærer der var langt over gennemsnittet og nu en personlig ven. En af G B's gode venner var den kendte fysiker Jens Martin Knudsen, som i en årrække underviste på Københavns Universitet. Han var en fantastisk bannerfører for dansk fysik og suveræn til at holde foredrag. Jeg kan kun anbefale jer alle at hente Jens Martin Knudsens Rosenkjær-foredrag fra dr.dk (tryk f.eks. her og podcast eller download de fem MP3-filer).
Jeg har cyklet en del for et par uger siden og haft tid til at lytte til Jens Martins fine foredrag og det satte en del tanker i gang omkring den måde mange fysikere arbejder på i forhold til den måde vi arbejder med IT.

Når man har gennemhørt Jens Martin Knudsens Rosenkjær-foredrag, så har man fået klart beskrevet at fysik handler om forståelse af eksperimenter. Blandt nogle af de fineste resultater gennem de sidste par hundrede år kan bl.a. nævnes

Fælles for de fire emner er at de beskriver meget komplekse fysiske fænomener på "enkel form"[1]. Man higer i fysikken efter at få forståelse for eksperimenter på en enkel form - og det har været en fantastisk succes gennem de sidste par hundrede år.

[1] Det kræver godt nok udvidet matematik, men ikke mere end at det læres gennem via gymnasiet og en universitets-uddannelse.

En af de ting, som fysikken har lært os er at eksperimentet er den strenge dommer over vores teorier. Det bedste ækvivalent til IT er modul- og system-test men vi har ikke altid været gode indenfor IT med vores test-håndtering, nok fordi de systemer vi laver i IT ofte er så ekstremt komplekse at et sæt af udtømmende tests for al tænkelig funktionalitet er umulig.

Hvorfor er det at vi indenfor IT ikke har et sæt af "naturlove" eller tilsvarende grundelementer at falde tilbage på? Vi kan vist ikke engang sammenligne IT med andre fag-retningers erfaringsgrundlag, biologi er klart meget mere evolutions-drevet end IT-verdens revolutions-drift. Kemi besider måske noget af den samme mængde frihedsgrader som IT, men er langt bedre forstået og drevet af kendte formler og konvergens.

IT minder måske mest om litteratur - bøger og software er skrevet med bogstaver, hvor der kun er løse bindinger på hvordan man kan koble de enkle bogstaver. To programmører vil i praksis aldrig skrive samme program ud fra en fælles opgaveformulering. Tilsvarende med forfatterere, der skriver tonsvis af forskellig litteratur. Litteratur er kun bundet af normer og måske et skelet for bogen, men ikke ret meget andet. Software er ofte skrevet ud fra en kravspecifikation og måske et sæt af tests, der skal opfyldes.

Er problemet med IT ikke også at det er en underlig størrelse. Det kræver ikke "så" meget før man kan påberåbe sig at være med som artitekt eller programmør. Jeg selv er ikke datalog, men beskæftiger mig med IT på højt plan hver dag.

/pto

Læs hele serien;

Kommentarer (6)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Thomas Hansen

Men er det ikke sådan at enhver anvendelse af fysikkens love til noget praktisk har samme kompleksitet som dit gennemsnitlige program? Nok er E=mc2 simpel nok, men hvis vi skal til at sætte tal på alle de processer der foregår i en almindelig forbrændingsmotor, så kan vi fylde en hel tavle med formler..

Nok kan du lave en formel der fortæller dig hvor mange omdrejninger du får ud af en given motor, hvis den får en given mængde brænstof, ligesom du kan lave en formel over den gennemsnitlige responstid for en mailserver ved en given load, men det giver dig umiddelbart ikke svaret på om hvor langt bedstemor kommer i bilen, eller om din server er stor nok, da det afhænger af utallige andre variabler, som du ikke lige har ved hånden..

Computere er jo baseret på simpel matematik, men det bliver fandens kompliceret. Så nok kan du opstille nogen fine formler, men de bliver alligevel skudt i sænk af go'e gammeldaws bugs. Ligesom sommerfuglen i regnskoven får skudt DMIs fremdagsprognose i sænk.

  • 0
  • 0
#2 Mikkel Meyer Andersen

Godt oplæg - og i den grad gode og aktuelle tanker!

Som jeg ser det, er der flere ting ved det: Fysik bruger - som du nævner - i et stort omfang "simpel" matematik, men hvis man bare skal bevise en ret lille algoritme formelt, kræver det ret meget arbejde. Så måske er ordinær matematik ikke vejen frem. Det er vist bare en omformulering af en af dine pointer: der er ingen grund til at opfinde hjulet hver gang (som man ofte gør!).

Og hvorfor gør man så det? (Gid jeg vidste det.) En mulighed er i hvert fald de byggesten, man bruger, når man programmerer. Dels er der forskellige paradigmer (hvilket medfører flere forskellige slags hjul, så at sige), og dels bliver kendte (og formelt beviste) algoritmer splittet op (/ad) og sat sammen igen med anden slags lim. Måske fordi det er lettere, man lige mangler en parameter eller hvad nu.

Så ja, der er mange gode udfordringer i det. Det er der vist ingen tvivl om.

Som du også efterlyser er det ikke så meget denne iagttagelse, men vel nærmere hvordan dette så løses - eller hvilke veje, man skal forsøge at gå af.

Min egne (fattige) tanker kredser mens jeg skriver dette omkring en ting, som jeg tænker på. Matematik er rent (by design :-)). Programmering (i hvert fald mange sprog) er noget rod - nemt, men matematisk noget rod. Algoritmer er beregnbare, og det kræver noget data i et vist omfang. Matematik kan dog udelukkende være totalt abstrakt uden at skulle udtrykke sig så præcist om eksempelvis data, som man skal i programmering (datalogi = læren om data).

Disse linier får næppe min pointe helt frem, så lad mig prøve at formulere det således: datalogi er pr. definition ikke a priori, og derfor kan man ikke lave aksiomatiske byggeklodser.

Man burde dog kunne lave byggeklodser som i fysik, men ofte tror jeg at kompleksiteten i datalogi er volumiøs, hvorimod den fysiske kompleksitet består i at udfolde de - fra forsøg - opnåede resultater.

  • 0
  • 0
#4 Martin Falck-Hansen

Det er en klassisk opfattelse at fysikkens teorier er ækvivalente med virkeligheden (naturen), men forholder det sig i virkeligheden således? En af dem der har rokket ved denne opfattelse er Nancy Cartwright med bogen "How the Laws of Physics Lie". En af hendes pointer er at alle fysikkens love er ceteris paribus love. Ceteris paribus er latin og betyder: "alt andet lige". Altså "alt andet lige så vil et objekt ligge stille eller fortsætte ad sin bane med konstant hastighed medmindre det bliver påvirket af andre kræfter" (Newtons bevægelsesligning). Man kan nu sprøge sig selv om der nogen sinde vil eksistere et objekt som ikke bliver påvirket af andre kræfter.

Spørgsmålet er om fysikkens love ikke mere er semantiske konstruktioner der kan regulere de modeller som fyskikken opstiller og i høj grad benytter sig af til f.eks. at beskrive og forudsige resultaterne af eksperimenter. Således forholder lovene sig til modellerne som igen forholder sig til virkeligheden (eller måske kun en beskrivelse af virkeligheden).

De herrer Hubert og Stuart Dreyfus har skrevet en del omkring kunstig intelligens og en af deres artikler (Making a Mind Versus Modeling the Brain) omhandler hvordan der i filosofien er to traditioner og prøver at relatere disse til netop datalogien. I artiklen skelner de mellem den rationelle og eksperimentelle tilgang. Den rationelle tilgang siger "that understanding a domain consists in having a theory of that domain. A theory formulates the relationships between objective, context-free elements (simples, primitives, features, attributes, factors, data points, cues, etc.) in terms of abstract principles (covering laws, rules, programs, etc.).)". Altså lidt i stil med fysikkens love. Den eksperimentelle tilgang modsiger denne opfattelse og mener: "a phenomenological description of the everyday world and everyday objects like chairs and hammers, and like Wittgenstein he found that the everyday world could not be represented by a set of context-free elements."

Se det var en ordenlig mundfuld filosofi - men kogt ned vil jeg sige at jeg tror at der er en lektie at lære fra begge lejre. At have visse almene love - måske udtrykt som udviklingspricipper, algoritme-lære og abstrakte datamodeller kombineret med en viden om praktisk udvikling, testmetoder samt en forståelse af brugere og forretningsgange vil skabe det bedste af begge tilgange.

  • 0
  • 0
#5 Claus Dræby

Jeg er ikke sikker på at fysik er den rigtige videnskab at bruge som model. En stor del af fysikken går netop ud på at forstå systemer der er så små (isoloerede) at det er til at overskue hvad der sker: Dette give fysikkere ret og pligt til at lave beregninger på systemer med et, to og tre atomer, men spørger man en fysikker om det kan betale sig at cykle hurtigere når man fryser får man svar af typen: Her er der alt for mange ting der spiller sammen, til at jeg kan komme med et svar.

Når fysikken bevæger sig mod større systemer bliver modelleringen mere udtalt, men samtidig stiger usikkerheden ved om man har udeladt noget essentielt i modellen: Det var sådanne udeladelser der i mange år - og til manges morskab - nægtede humlebien at flyve. Det kan i midlertid sagtens bruges til at forklare endog megeet interessante eksperimenter, hvilket den statistiske mekanik vel er et ypperligt eksempel på.

For mig at ser er kemi den logiske konsekvens af dette kontroltab: Her er systemerne altid så store at det er umuligt at regne på detaljerne, og derfor må vi ty til en eller anden variant af statistiske metoder: Ingen stiller Maxwell ligninger op for selv et lille kemi forsøg. I den øvre ende af kemiens kompleksitet har vi så den organiske kemi, hvor carbon atomets mange kombinationsmuligheder giver ekstra store og komplekse systemer.

Når disse komplekse kemiske systemer bliver levende rykker vi over i biologi (og videre mod medicin). Her er systemerne så komplekse at man ofte opgiver at lave egentlige modeller, der kan forudsige noget. Jeg har forsøgt at modellere fysiologi sammen med nogle læger, og har konstateret at de på store områder - kloge af skade måske - ikke vil sætte deres lid til modeller. Det er simpelt hen en erfaring at der altid er udeladt for meget til at modellen er til at stole på.

Tilbage er så kun mine egne to fag: Matematik og Datalogi. Problemet med dem begge er at de passer dårligt i ovennævnte kategorisering. På den ene side har de intet eksperimentelt grundlag - de er rent tanke stof. På den anden side har de vist sig at være gode til at skabe meget konkrete resultater. Så selv om matematik i princippet ikke beskæftiger sig med virkeligheden har det vist sig at 'Virkeligheden er en god tilnærmelse til matematikkens verden' (som min gamle vejleder Johnny Ottesen sagde).

Så jeg tror at problemet med IT systemer og programmering i særdeleshed er at der ikke er nogle begrænsninger. Det er det der gør at det minder mere om humaniora end om natur videnskab. Vi kan ikke eksperimenter os til noget for der er ikke noget vi kan eksperimenter med for at se om det er rigtigt. Der findes ikke et eksperiment der kan afgøre om en model af en dialog box er en god model, for der er ingen dialog boxe i virkeligheden.

Så skal vi lære noget af 6000 års matematikhistorie tror jeg det er: Hold øje med hinanden, og tjek hinandens resultater. Det er selvfølgelig ikke så nemt når det er meget oppe i tiden at holde ting hemmelige. Accepter at der alligevel vil være masser af fejl, det er der også i publiserede matematiske beviser. Men lad os blive ved at lære af dem.

  • 0
  • 0
#6 Mikkel Meyer Andersen

Fysik er jo netop ikke en eksakt videnskab, og derfor kan er fysiske teorier netop "ceteris paribus".

Datalogi er heller ikke en eksakt videnskab generelt set. Det kan dog splittes op i bider, hvoraf nogle vha. matematik (som netop er en eksakt videnskab) kan bevises. Hvem sagde halting problem?

Så bare fordi man ikke har en eksakt videnskab, er det efter min mening ikke ensbetydende med at man ikke kan bruge byggeklodser (nu vi snakker om byggeklodser, er konstruktion af huse sjovt nok heller ikke en eksakt videnskab :-)).

  • 0
  • 0
Log ind eller Opret konto for at kommentere