1.4. Simulering - Modeller

For lige at få lidt mere 'real-life' perspektiv på datarepræsentation, så forestil dig et program, som skal simulere noget, der foregår i det virkelige liv, matador-spil, adventure-spil (som på visse punkter forventes at svare til ting, vi kender fra dagligdagen), eller beregning af en vejrudsigt. Vind fra vest med lavtryk - hvor ligger grænsen (isobar linjen) for 990 millibar etc.etc. Man kan for eksempel opdele luftrummet over Skandinavien i firkanter med hver deres vejr-målinger og beregne interaktionen mellem firkanterne efter de fysiske love for tryk udligning, temperaturudvidelser etc. - pyha, godt det ikke skal udregnes i hånden!

Simuleringer er så forskellige. Man kan simulere reaktionerne på håndtag og visningen i instrumenter i et flycockpit for at give piloterne øvelse i at betjene styremekanismerne; eller man kan simulere eller efteligne lydene fra et spillende symfoniorkester. Simuleringerne svarer ikke på alle punkter til virkeligheden, men kan være nyttige og mere eller mindre tæt på virkeligheden.

Hvis vi skulle beregne det mest rentable dyrkningsforløb for tomater i drivhus, hvad skulle vi så vide om dem? Jeg behøver ikke spørge, om vi kunne spise resultatet af simuleringen! Men en ting er sikkert, der skulle mange oplysninger til, de fleste af dem skulle opsamles ved hjælp af grundige forsøg og målinger, som ville ende med nogle tal, der repræsenterede egenskaber ved forløbet.

Derimod så ligner et investeringsspil og en investerings service for bankkunder hinanden så meget, at man kan bruge det ene program som grundlag for den virkelige service. Her bliver der blot koblet betalingstransaktioner på spillet, med tilhørende retsansvar.

Kobler vi simuleringerne på virkelige objekter (med passende teknik, som i sig selv kan være komplicerede computersystemer) kan computeren anvendes som værktøj til at "styre virkeligheden", måske bedre, end vi kan gøre det, men til syvende og sidst blot som vores "forlængede arm".

Simulerings- og styringsteknikker hviler på evnen til at repræsentere begreber og objekter ved hjælp af computerens bits. Som nævnt er denne repræsentation altid mangelfuld. Den opfattelse af verden, som måtte ligge til grundlag for simuleringerne, kaldes en model. Modellen er altså ikke kun repræsentationen af statiske, ubevægelige, egenskaber, som tingene har, men også af deres måde at bevæge sig og indgå forbindelser med hinanden, sådan som for eksempel de enkelte styrehåndtag i en flysimulator må reagere på og med hinanden.

Men ligesom talrepræsentationen er mangelfuld, så vil modeller også være mangelfulde. Ikke kun fordi der mangler den syvende decimal, men fordi der er grænser for, hvor meget programmøren kan forudse. Havarisituationer, vejrsituationer, forskellige former for landskabsforhindringer etc. kan kun i et begrænset antal være repræsenteret i en computer. På et eller andet tidspunkt kommer man (efter meget arbejde) formentlig til en model, som tilfredsstiller brugerne af modellen så meget, at de opfatter modellen som en fuldt funktionel fremstilling af virkeligheden.

Den slags tanker virker specielt tiltrækkende på børn og reklamefolk. Måske også på fabrikanter af computerspil. Ord som cybernetics, cyberspace og cyborg spiller på dette element af "en verden inde i computeren".

Man kunne sige, at vi har "mappet", kortlagt, en del af den virkelige verden ved hjælp af vores computers bits og nogle programmer, som behandler dem i overensstemmelse med vores fortolkning.

Denne teknik, at "mappe" en mængde af elementer, således at de repræsenteres af en anden mængde, er den grundlæggende disciplin for applikationsprogrammører. Alan Turing har omkring 1940-1950 beskrevet det teoretiske grundlag for computerens virkemåde, og hans arbejde er stadig interessant for programmører, der vil forstå muligheder og grænser for computerens "indre univers".