Dataprogrammering: Et verdensspråk ble skapt i Oslo

Tusenvis av dataspråk er blitt lagd de siste femti årene – men knapt noen så epokegjørende som norske Simula fra 1967.

SLOSS: Det kunne gå livlig for seg da Simula ble til: En nyansatt på Norsk Regnesentral løp en gang bestyrtet ned til sentralborddamen for å gi beskjed om at det sto to menn og sloss foran en tavle i annen etasje. Damen gikk ut for å lytte og svarte straks at "Neida, det er bare Dahl og Nygaard som diskuterer Simula." Fra venstre: Bjørn Myrhaug, Sigurd Kubosch, Kristen Nygaard og Ole-Johan Dahl. (Foto: Ukjent/Norsk Regnesentral)

Det er interessant hvordan et lite forskningsprosjekt – for det meste bestående av bare to personer – kunne lage et programmeringsspråk og et sett av begreper så kraftfulle, at det femti år senere ligger under det meste av programvareutviklingen i verden, sier professorene Stein Krogdahl og Arne Maus på Institutt for informatikk ved Universitetet i Oslo.

– De utarbeidet ikke bare et nytt programmeringsspråk, men en helt ny måte å tenke på.

I dag bruker programutviklere over hele verden Simulas metodikk. De modellerer verden slik Kristen Nygaard og Ole-Johan Dahl gjorde for et halvt århundre siden.

GENIALE: – De utarbeidet ikke bare et nytt programmeringsspråk, men en helt ny måte å tenke på. Kristen Nygaard og Ole-Johan Dahl  var to eksepsjonelt talentfulle forskere – ekstremt godt skolerte og med det beste internasjonale kontaktnettet, sier Stein Krogdahl.  (Foto: UiO)

– Ja, så forut for sin tid var det de gjorde, at det skulle gå tjue år før de sentrale begrepene de brukte, ble allment forstått, påpeker Krogdahl.

Men hvordan var det mulig å gjøre noe så nyskapende, og hva var egentlig Dahl og Nygaards geniale bidrag? La oss begynne med begynnelsen. Vi skal til Forsvarets forskningsinstitutt på Kjeller utenfor Oslo.

Enorme utregninger

Året er 1948. Den unge studenten Kristen Nygaard er nettopp kommet for å gjøre siviltjenesten sin. Krigen er slutt og Norge satser sterkt på atomforskning. Det voldsomme energipotensialet skal utnyttes til sivilt bruk. På Kjeller er arbeidet i gang med å bygge opp den første norske atomreaktoren.

Nygaard får i oppdrag å regne ut diameter på uranstavene i reaktoren. Denne er avgjørende for å oppnå riktig mengde atomspaltinger, som i neste omgang gir den riktige energiutviklingen. Er diameteren for liten, blir det ingen kjedereaksjon blant nøytronene i det radioaktive uranet, og prosjektet blir en fiasko. Er den for stor, vil en katastrofe skje.

Dette var før de elektroniske datamaskinene, så beregningene måtte stort sett gjøres for hånd. Metoden var å beskrive den fysiske prosessen inne i reaktoren. Forskerne kunne simulere banene og kollisjonene til et stort antall tilfeldige nøytroner og lage statistikk over hvordan disse oppførte seg samlet. Dette kaltes gjerne ‘Monte Carlo-simulering’ siden tilfeldighet spiller en viktig rolle i metoden.

Etter hvert sitter seks-sju mennesker og regner på slike nøytronbaner i flere måneder på fulltid. De regnet åpenbart riktig. Reaktoren virker som den skal da den skrus på i 1951.

Det var på denne tiden, da de aller første datamaskinene begynte å komme, at Nygaard kjente behovet for en egen notasjon, eller et ‘språk’ som, på en mer overordnet måte, både kunne beskrive slike simuleringer på en måte som var lettere å forstå for mennesker, og også slik at maskiner kunne utføre dem rett ut fra beskrivelsen.

Simulere virkeligheten

Året er blitt 1960. Kristen Nygaard er forskningssjef på det nyetablerte forskningsinstituttet Norsk Regnesentral – og overtaler vennen og kollegaen, Ole-Johan Dahl, til å følge med. Nygard er systemteoretikeren. Dahl er blant de aller fremste programmererne og behersker til fulle alle de detaljer dette innebar den gangen. Sammen skulle de komme til å sprenge grenser.

Samarbeidet bar raskt frukt. I 1961 innledet de et formelt samarbeid om et slikt simuleringsspråk som Kristen så for seg. Allerede i 1962 var skissen klar til et språk de kalte Simula (forkortelse for SIMUlation LAnguage). Dette språket, nå ofte referert til som Simula 0, presentere de på en konferanse i München samme år. Men Nygaard og Dahl fikk snart nye ideer, og denne første versjonen ble derfor aldri implementert. 

Tanken var opprinnelig at Simula skulle bygge på det nylig etablerte språket Algol 60, utviklet i Europa. Men det viste seg at ved å bryte kraftigere med den grunnleggende filosofien bak dette språk-et, noe som blant annet hadde med lagringsplass å gjøre, så kunne en oppnå et mye mer fleksibelt språk. På dette grunnlaget utformet de så et mer generelt språk for simulering. Det var ferdig implementert og klart til bruk i januar 1965 – Simula I.

Det skulle vise seg å være et ypperlig verktøy for å beskrive, både for mennesker og maskiner, hvordan en simulering skulle foretas – men språket var også helt rettet mot slike beskrivelser. Stein Krogdahl forklarer:

– Det nye språket kunne greit beskrive virkelige situasjoner og hendelser, som jo ofte er temmelig komplekse – som systemer med mange komponenter i kompliserte samspill. Samtidig kunne altså et kompilatorprogram oversette en slik beskrivelse til maskinkode som automatisk kunne utføre simuleringen som den beskrev.

I 1963 skjedde noe viktig: Da fikk Norsk Regnesentral kjøpt den amerikanske stormaskinen Univac 1107 – den nest mest avanserte datamaskinen i hele Europa, og de fikk også penger til å implementere Simula 1 på denne maskinen.

FILOSOFI: – I Simula ble data og operasjoner beskrevet samlet som to sider av samme begrep: objekt.  Objekter er filosofi. Nygaard var svært interessert i filosofi, forteller Arne Maus.
– Alt i verden består av forskjellige objekter. (Foto: Ola Sæther)

Gjennombruddet – Simula 67

Simula 1 var altså et rent simuleringsspråk, og når kompilator-en for dette var klar i januar 1965, ble språket tatt i bruk til simuleringsoppgaver, både ved Regnesentralen selv og av andre rundt omkring i verden. 

– Disse erfaringene, og også viktige impulser utenfra, gjorde det snart klart at ideene fra Simula 1 kunne generaliseres og ikke minst: danne grunnlag for et språk rettet mot programmeringsoppgaver generelt, ikke bare simuleringsoppgaver. Utover høsten arbeidet de to forskerne hardt, og rundt årsskiftet begynte brikkene å falle på plass. 

Kristen Nygaard forteller selv mange år senere:

«Jeg husker veldig, veldig klart, akkurat øye-blikket, rundt klokka to om natta ved skrivebordet på soverommet på Nesodden, i januar 1967, da begrepet «nedarving» (eller klasse og subklasse) ble skapt. Jeg skjønte med én gang at dette var løsningen på et viktig problem som Ole-Johan Dahl og jeg hadde kjempet med i måneder og uker. Jeg innså også at løsningen for første gang i et programmeringsspråk innførte en sterk og fleksibel versjon av forestillingene om generalisering og spesialisering, med all kraften som ligger i disse begrepene. Og sant nok; nedarving har blitt nøkkelbegrepet i objektorientert programmering, og dermed i programmering generelt.»

En konferanse om simuleringsspråk skulle holdes på Lysebu i Oslo i mai. Dahl og Nygaard arbeidet desperat. De utforsket og testet de nye begrepene. Forskerne kom i mål. De hadde greid å lage et konsistent språk med alle de nye aspektene, og de sentrale blant disse – klasser, subklasser og dynamisk genererte objekter av disse. De fikk en artikkel ferdig akkurat i tide til konferansen.

 

Verden inn i datamaskinen

Hva var det så som var så banebrytende ved det å tenke i disse begrepene når en skal skrive store og komplekse programmer?

– Vi tenker jo om datamaskiner at de først og fremst kan gjøre noe, som for eksempel å utføre et stort antall regneoperasjoner på kort tid. Men dermed kommer dataene vi skal gjøre noe med, mer i bakgrunnen, påpeker Krogdahl.

Med Simula-språkene kom det en helt annen symmetri inn i dette. Det var problemstillinger fra simulering som fikk fordelen med dette fram i lyset.

– Innen slik programmering blir det nå plutselig helt opplagt: Vi må sette opp en verden av ymse typer elementer for å få til en fornuftig arena som simuleringen kan utspille seg i. Disse elementene er av forskjellige typer eller klasser, og disse igjen vil forholde seg til hverandre på spesielle måter.

– Hvordan ting skal skje i denne verdenen, vil vi da ofte vente med å beskrive til det meste av denne ‘datastrukturen’ er på plass. Da vil det ofte være naturlig å knytte de forskjellige aksjonene til bestemte objekter, og så tenke at det er disse objekt- ene selv som utfører aksjonene. En bil kan «starte», «svinge» eller «stoppe», og en kunde kan «stille seg i en kø» eller «bli ekspedert ved skranken».

– Dahl og Nygaard hadde innsett at denne symmetrien mellom data og aksjoner også i høyeste grad var fruktbar for programmering generelt. Ja, at det sågar kan være en fordel å sette opp datastrukturene først, for så etterpå å beskrive det som skal gjøres og avgjøre hvem som skal gjøre hva. Dette kan vi si danner grunntanken i såkalt objektorientert programmering, påpeker Krogdahl.

To personligheter

– Hvordan greide de det?

– Det var åpenbart, sier Stein Krogdahl og Arne Maus – og gode kilder bekrefter det igjen og ingen: De to var eksepsjonelt talentfulle forskere, ekstremt godt skolerte og med det beste internasjonale kontaktnettet. De utfylte hverandre i forskningsprosessen. Mens Nygaard må ha vært visjonær og til tider drømmende om prosjektets muligheter, var Dahl den mer jordnære som kunne sette felles ideer ut i livet. Han var den rolige, glupe gutten som kunne høre på Kristen, og så si: Nei, det der virker ikke. Du kan ikke gjøre sånn.

– De som kjente dem, forteller om to helt forskjellige personligheter. Kanskje var det derfor de lyktes? Begge hadde en åpen, kritisk tone og var mer enn villige til å ta livet av den andres ideer. Det var de to, det radarparet der, som sammen greide å lage dette.

– De var klart originale i forskningen sin – og så det meste på helt nye måter. Likevel var de del av en lang, europeisk tradisjon innenfor faget.

LES: Hva skjedde etter 1967? Ble Simula en suksess – vitenskapelig og også kommersielt?

Av Trine Nickelsen
Publisert 20. nov. 2017 14:20 - Sist endret 28. mai 2018 12:36
Legg til kommentar

Logg inn for å kommentere

Ikke UiO- eller Feide-bruker?
Opprett en WebID-bruker for å kommentere