utvikling

Etter 50 år er sporene etter Simula fortsatt svært dype

Men et uheldig valg på 1970-tallet kan ha forhindret den store utbredelsen.

Jubileums-t-skjorten for Simula. Dette er baksiden. Foran er det en mindre tekst som sier «Simula does it with class»
Jubileums-t-skjorten for Simula. Dette er baksiden. Foran er det en mindre tekst som sier «Simula does it with class»

FORSNINGSPARKEN (digi.no): Det er få norske oppfinnelser som har satt så store spor etter seg som programmeringsspråket Simula. Selv om mange nok aldri har hørt om Simula, så introduserte språket et helt nytt programmeringsparadigme, objektorientert programmering, som mange av dagens langt mer moderne språk er basert på.

I år er det femti år siden Simula 67 ble lansert, noe som denne uken feires med et stort arrangement ved Institutt for informatikk (Ifi) ved Universitetet i Oslo.

I den forbindelse samlet fikk digi.no samlet fire personer som alle enten har vært involvert i utviklingen eller bruken av Simula, eller jobbet sammen med minst én av de to oppfinnerne, Kristen Nygaard og Ole Johan Dahl.

Leste du denne? Java-oppfinneren kommer til Oslo for å hylle en av Norges viktigste oppfinnelser

SIMUlation LAnguage

Arbeidet med Simula startet selvfølgelig lenge før 1967, og Simula 67 var heller ikke det første språket med Simula-navnet. Det het nemlig Simula I, men hadde et helt annet formål enn Simula 67.

– Det som var bakgrunnen var at Kristen var på Forsvarets forskningsinstitutt (FFI) hvor han var med på å simulere hvordan man skulle lage atomkraft til fredelig bruk. Da måtte han simulere nøytronene, etc., for at disse skulle gå i passelig hastighet. Dette ble gjort delvis for hånd, og delvis med maskiner med noen desperate programmeringsforsøk. Det var jo veldig forsiktige språk og maskiner de hadde den gang, forteller Stein Krogdahl, professor emeritus ved Ifi, til digi.no.

– Kristen mente at det måtte kunne gå an å gjøre noe med dette, forteller Krogdahl.

Nygaard sluttet ved FFI da han ble tilbudt en stilling som avdelingsleder for operasjonsanalyse ved Norsk Regnesentral (NR) i mai 1960.

– I 1961/62 satte han i gang et prosjekt, som jeg har kalt Simula 0, hvor man kunne beskrive en stasjon som kunne få kunder inn, som kunne lage nye kunder, hvor kundene kunne være aktive, samt noe kø-systemaktig. Dette var et slags språk i 1962, men det ble aldri ordentlig definert og dokumentert. Men utfra dette fikk de noen ideer, forteller Krogdahl.

Krogdahl har undervist i Simula, blant annet ved Universitet i Tromsø på 1970-tallet. Tidligere hadde han vært med på å dokumentere Simula-kompilatoren og i 1968 var han blant annet gruppelærer i det kurstilbudet i numeriske beregninger som Ole-Johan Dahl da var i ferd med å bygge opp.

Hadde mye godt å si om Simula: Fra venstre Stein Krogdahl, Lars Holden, Birger Møller-Pedersen og Dag Belsnes. I bakgrunnen skimter vi Kristen Nygaards hus, mens bygget til høyre er Ole-Johan Dahls hus. Bilde: Harald Brombach
Hadde mye godt å si om Simula: Fra venstre Stein Krogdahl, Lars Holden, Birger Møller-Pedersen og Dag Belsnes. I bakgrunnen skimter vi Kristen Nygaards hus, mens bygget til høyre er Ole-Johan Dahls hus.

Basert på Algol

I mellomtiden hadde også OIe-Johan Dahl sluttet ved FFI og begynt ved NR. I 1963 ble Nygaard forskningssjef knyttet til NRs avdeling for spesielle prosjekter.

Ole-Johan var en super-program-merer på denne siden.

Dag Belsnes

– Simula 0 var bygd på Algol-60, som ble definert i 1960 og som i alle fall blant akademikere ble regnet som vesentlig bedre enn Fortran, som før det var det dominerende språket, i alle fall til tekniske beregninger. Men Algol er et språk som bruker lagre på en veldig stack-aktig måte. Hvis du skulle lage noen objektaktige ting, som de så behov for i forbindelse med kunder og nøytroner, så måtte de bruke lageret helt annerledes. I 0-versjonen mente de at de skulle trikse til dette med Algol, men så var det vel Ole-Johan som mente at man måtte ha såkalt garbage collection, som sørger for å trykke sammen de delen av minnet som er i bruk og frigjør resten, forteller Krogdahl.

Dette gjorde en stor forskjell, og med det begynte prosjektet å nærme seg det som ble til Simula I.

– Ole-Johan var en superprogrammerer på denne tiden. Han og Kristen var veldig forskjellige, men de jobbet som et par hele tiden. Sammen var de dynamitt, sier Dag Belsnes.

Belsnes har blant annet vært forskningssjef ved NR og professor II ved Ifi. Som hovedfagsstudent hadde han fra 1965 en deltidsjobb i gruppen til Nygaard og Dahl ved NR. Der jobbet han litt med runtime-rutiner for Simula I. Senere ledet Belsnes et prosjekt om å lage Simula-kompilatoren til datamaskiner fra Control Data.

Les også: C++-oppfinneren tildelt «norsk» IT-pris

Forvirrende navn

– Simula I var et spesifikt språk for simulering, i motsetning til Simula 67 – som de var dumme nok til å kalle det – og som var ment som et helt generelt språk til bruk i alle sammenhenger. Men i og med at man valgte dette navnet, var det mange som trodde (og fremdeles tror) at også dette var et simuleringsspråk, litt forbedret sammenlignet med Simula I, sier Krogdahl og understreker at det en dramatisk forskjell på de to språkene.

Simula I ble lagd ferdig i 1965. Ifølge Krogdahl ble dette ganske bra, fordi de hadde frigjort seg fra den stack-baserte lagringen.

– Men så så de at disse begrepene også kanskje kunne være interessant til generell programmering. Så fikk de noen innspill fra Tony Hoare om recorder og sub-recorder, og så koblet de alt dette sammen, slik at de fikk klasser og subklasser, handlinger i objektene, og så videre, forteller Krogdahl.

– Det ble grovt sett ferdig sommeren 1967.

I ettertid ble språket lite videreutviklet. Opprinnelig var alle medlemmene av en klasse offentlige, men i en senere implementering ble det mulig å beskytte medlemmene med deklarasjonene protected og hidden. Senere lagde selskapet Simula a.s, som hadde sine egne implementeringer av Simula, en helhetlig definisjon som standardiserte språket. Denne ble kalt Simula 87.

Krogdahl var selv med på et sideprosjekt med modularisering som aldri ble mer enn en hovedfagsoppgave, men som ble kalt Simula 85.

Hva fanden er objektorientering?

Det er Krogdahl som stiller spørsmålet og som deretter går i gang med å forklare.

– Ett bilde er at når man i et språk som Fortran, Algol og Cobol skal beskrive hva som skal gjøres, så er det kanskje rimelig å dele dette inn i for eksempel prosedyrer, en samling av handlinger, som man kanskje har et navn på – for eksempel skriv_ut eller snu_opp_ned. Det er liksom en operasjon som det er naturlig å tenke seg, og så setter man sammen programmet ved å gjøre kall til disse, forklarer Krogdahl.

Simula-oppfinnerne Ole-Johan Dahl og Kristen Nygaard foran en spesialutviklet norsk Mach-S arbeidsstasjon hos Norsk Regnesentral. Bilde: NR
Simula-oppfinnerne Ole-Johan Dahl og Kristen Nygaard foran en spesialutviklet norsk Mach-S arbeidsstasjon hos Norsk Regnesentral.

– Men det er kanskje lurt også å bringe inn symmetrisk også et annet synspunkt, for det er jo også data i programmet. I det første bildet er dataene bare noe som skal deklareres og forandres litt av og til. I objektorientering kommer dataene kanskje som det primære, at du beskriver hvilken struktur de har, hvilke elementer du vil ha med – som personer, fly, kontoer i banken og så videre, og kanskje det er like viktig å beskrive hvordan disse skal se ut med hensyn til data. Så først etterpå kan du si at, «ålreit, så kan jeg lage liv i systemet», ved at du for eksempel skal overføre fra en konto til en annen. Dette ved å plassere operasjonene rundt i dataelementene. Det viste seg å være en veldig fruktbar tankegang når det gjaldt programmering, sier Krogdahl.

– Objektorientering tar utgangspunkt i modellering eller simulering. Man tar utgangpunkt i et system og må bruke dekomponering – oppsplitting i biter – dersom det er litt sammensatt og stort. Du har objekt som skal modellere noe eksisterende, som består av biter. Det jeg likevel syns er viktigere enn objektorientering, er klasseoppbygning. For å forstå og beskrive objektene, til det har du klassene. Dersom man skal forstå systemet, er det der meningen ligger, legger Belsnes til.

Oppdagelse, ikke oppfinnelse

– Kristen pleide å si at objektorientering ikke ble oppfunnet, det ble oppdaget. På grunn av de mer og mer komplekse systemene som ble lagd, ville det liksom ha presset seg fram. Det var muligens i forbindelse med 25-års jubileet at noen spurte, «Hva blir det neste?». Men heller ikke 25 år etter dette, har det skjedd noe tilsvarende «ground breaking». Det er ikke noe nytt som har kommet, fordi det ikke er lett å forestille seg noe som er enda bedre. Det må i så fall komme fra et behov, slik som Simula gjorde, for å kunne løse enda mer komplekse problemer, sier Birger Møller-Pedersen.

Møller-Pedersen er også professor emeritus ved Ifi. Han hadde på midten av 1970-tallet Nygaard som veileder ved Universitet i Aarhus, hvor Nygaard var gjesteprofessor. Nygaard foreslo at Møller-Pedersen skulle bli med ham tilbake til Oslo og NR for å jobbe med programmeringsspråket Beta, en etterfølger til Simula.

Den berømte Simulatavla, hvor mange av de ofte heftige diskusjonene i prosjektet foregikk. På bildet ser vi fra venstre Bjørn Myhrhaug, Sigurd Kubosch, Kristen Nygaard og Ole-Johan Dahl. Tavla er i dag hengt opp på et grupperom i Informatikkbiblioteket. I 1997 ble den signert av Dahl og Nygaard. Til tross for at dette ble fiksert med lakk, greide overivrig rengjøringspersonell på et tidspunkt å vaske det vekk. Bilde: NR
Den berømte Simulatavla, hvor mange av de ofte heftige diskusjonene i prosjektet foregikk. På bildet ser vi fra venstre Bjørn Myhrhaug, Sigurd Kubosch, Kristen Nygaard og Ole-Johan Dahl. Tavla er i dag hengt opp på et grupperom i Informatikkbiblioteket. I 1997 ble den signert av Dahl og Nygaard. Til tross for at dette ble fiksert med lakk, greide overivrig rengjøringspersonell på et tidspunkt å vaske det vekk.

– Men selv internett har ikke skapt nye behov, legger han til.

Fjerdemann i kvartetten er Lars Holden, som har vært administrerende direktør ved Norsk Regnesentral siden 2001. Han har hatt vesentlig mindre med Nygaard og Dahl å gjøre enn de øvrige tre, men samarbeidet med Nygaard om et prosjekt om undervisning i objektorientering like før Nygaard døde i 2002. Holden lærte seg Simula som student i 1979.

– Hva om de ikke hadde oppdaget dette? Hvem ville ha gjort det da? Det er ikke opplagt at det skal være et objekt. Men en eller annen enhet ville det måtte være. Kristen mente at før eller senere hadde noen andre oppdaget objektorientert programmering, sier Holden.

Bilder av et hefte med kildekoden til det som omtales som verdens første objektorienterte program, finnes på denne siden. Det kalles «Airport Departure System» og er skrevet av Kristen Nygaard i 1965.

Ba om gratis kompilator

Selv om Simula og ideene det bygger på var banebrytende, ble ikke språket veldig mye brukt. Men Krogdahl trekker fram en hendelse som kunne ha endret dette.

En gang tidlig på 1970-tallet kom Donald E. Knuth, en av verdens mest kjente informatikere, for å besøke Ole-Johan Dahl ved NR. Dette var noen få år etter at Knuth var blitt professor ved Stanford University.

Det kunne ha fått enorm betydning for utbredelsen.

Stein Krogdahl

– Knuth spurte om han kunne få med seg en kompilator gratis fra NR til bruk i undervisningen. Men NR ville ha noen penger igjen for utviklingen, så han fikk ikke dette. Hadde han fått det, kunne det ha fått enorm betydning for utbredelsen, mener Krogdahl.

I tillegg til å bli brukt til undervisningsformål i blant annet Norge, Danmark og Australia, ble Simula også brukt av Norsk Data, det svenske forsvaret og av Universitetet i Oslo, blant annet i forbindelse med kommunikasjonssystemer.

Ifølge Møller-Pedersen brukes det fortsatt til simulering ved NTNU. Blant annet benyttes Cim-kompilatoren, som er et resultat av hovedfagsprosjektet til de daværende studentene Sverre Hvammen Johansen og Terje Mjøs. Den kompilerer ikke Simula til maskinspråk, men til C.

Norske ingen vet om Norges to IT-verdensstjerner: Verdensledende forskning i glemmeboken

Som eget selskap

Nevnte Simula a.s ble etablert den 14. juni 1984 for å overta ansvaret for, og rettighetene til, Simula. Virksomheten startet opp 1. januar 1985.

Fra da av sto Simula a.s. blant annet for videreutviklingen og det globale salget av de eksisterende Simula-systemene for UNIVAC og IBM, PC Simula for OS/2, MS-DOS og XENIX/UNIX, samt fellesprosjektet S-Port, et portabelt Simula-system. Selskapet hadde også ansvaret for Simula Standards Group (SSG) og sekretariatet til Simula Development Group (SDG).

Fra og med sommeren 1991 var det i praksis slutt. Da Gunnar Syrrist sluttet den 31. juli, hadde ikke selskapet flere ansatte igjen. Dette opplyses i en presentasjon digi.no har mottatt fra Syrrist, som i dag er førsteamanuensis ved Høgskolen i Sørøst-Norge.

Vedtaket om å avvikle ble likevel først gjort under et styremøte den 25. mai 1998.

På denne siden, som opprinnelig ble utgitt av Syrrist for mer enn 20 år siden, finnes en del informasjon om blant annet PC Simula og eksempler på lisensprisene for Simula-kompilatorene.

En oversikt over mange av systemene Simula var tilgjengelig for, samt mange av leverandørene, finnes på denne siden.

Leste du denne? Bli med Kristen Nygaard på restaurant - lær objektorientering

Arven

Selv om Simula som språk ikke ble noen kommersiell suksess, så lever ideene om objektorientering i høyeste grad videre den dag i dag. Ifølge Krogdahl var det Alan Kay og andre ved Xerox PARC som var først med å ta ideene videre gjennom språket Smalltalk. Dette var tidlig på 1970-tallet.

Krogdahl forteller at Smalltalk ikke har typer på samme måte som Simula, noe som gir mer frihet, men samtidig behov for mer sjekking i runtime, slik at oppgavene går langsommere å utføre.

– Det var to verdener. Lisp-verdenen hvor man har veldig frihet, og de mer typede språkene. Smalltalk ble en mellomting som begge grupper kunne føle seg hjemme i. Det ble derfor stor oppslutning om dette, forteller Krogdahl.

Smalltalk ble en mellomting som begge grupper kunne føle seg hjemme i.

Stein Krogdahl

Men ifølge Holden eksploderte bruken av objektorientering først med C++, som er utviklet av danske Bjarne Stroustrup under første halvdel av 1980-tallet.

– Stroustrup har fortalt at han aldri har opplevd noe negativt fra Kristen og Ole-Johan, selv om han hadde lagd det noen vil kalle et hack. Det fikk ideene til å bli spredt. Selv med Smalltalk var det ikke snakk om noen konkurranse, forteller Møller-Pedersen.

Simula ble brukt som programmeringsspråk i introduksjonsemnet ved Ifi, UiO, fram til slutten av 1990-tallet.

Utskifting i Bergen: Java motiverer studentene

Lite kjent egenskap

Mens objektorienteringen er den egenskapen Simula virkelig har blitt kjent for, er det mindre kjent at språket også ble designet med støtte for både programmering og modellering. Det vanligere er at man bruker et separat språk, og da gjerne UML, til modelleringen.

– Det er mange bedrifter som modellerer i et separat språk som UML. Men det er også mange som har opplevd at de senere har endret på selve programmet, men ikke på modellen. På sikt vil ikke programmet og modellen lenger være i synk. Du får to sett med artefakter som ikke er konsistente, forteller Møller-Pedersen.

– Simula 67 var tenkt å støtte begge deler, men det ble ikke noe av. Vi forsøkte det med Beta, men det kom ikke helt på plass. Nå skal det sies at modellering den gang ikke var så omfattende som det noen vil ha det til i dag, forteller han.

Egnet til det meste

På spørsmål om det finnes områder hvor objektorientering ikke egner seg, svarer Krogdahl at tilnærmingen er ganske avhengig av den nevnte garbage collectoren og at man sliter litt ved sanntidsanvendelser.

– I alle fall i de enkleste versjoner, så stopper jo hele systemet opp, så rydder man i noen millisekunder, og så starter man det igjen. Så der er det gjort diverse desperate ting for å kunne kjøre halvveis garbage collection parallelt med vanlig kjøring, sier Krogdahl, uten at han vil påstå at dette er et stort problem.

Belsnes legger til at dersom man lager en beskrivelse av for eksempel personer, så gjør man en abstraksjon hvor man trekker fram de egenskapene som er viktige for akkurat det ene systemet.

Python ligner mer på Simula på den måten, fordi man bare trenger å skrive en funksjon.

Birger Møller-Pedersen

– Dersom man har et annet system, som også har personer, og man lager en beskrivelse av en person der, så kan det bli konflikter dersom man skal koble sammen systemene, fordi man har beskrevet en person på forskjellige måter. Dette fordi det dreier seg om ulike systemer som fokuserer på ulike ting, forklarer Belsnes.

– Ellers vil jeg si at det passer til alt, i hvert fall Simula, som også var Algol, så det kunne jo kjøre all slags type tankegang. I Java, derimot, er jo alt objekter. Der nytter det ikke bare å komme med en prosedyre og si at jeg skal ha eksekvert den. Du må ha et objekt, sier Krogdahl.

– Python ligner mer på Simula på den måten, fordi man bare trenger å skrive en funksjon. I Java må man ha en klasse med en eneste gang, for å lage en metode. Dersom du underviser direkte i objektorientering, så er Java fint. Men dersom du bare skal lage en funksjon, så passer det dårlig med Java, sier Møller-Pedersen.

Fra i høst har Ifi ved Universitetet i Oslo erstattet Java med nettopp Python som språk i IN1000, som er instituttets introduksjonsemne i objektorientert programmering. Også ved NTNU er det Python det undervises i grunnkurset i informasjonsteknologi. Men i det kurset er det prosedyreorientert programmering det fokuseres på.

Les også: Nå må ikke Stanford-studentene lære seg Java lenger

I siste liten

Både Dahl og Nygaard døde sommeren 2002 med bare noen ukers mellomrom. Heldigvis rakk de før de gikk bort å motta tre store hederspriser for arbeidet de hadde gjort.

Kristen Nygaard og Ole-Johan Dahl ble tildelt kommandører av St. Olavs Orden i 2000.
Kristen Nygaard og Ole-Johan Dahl ble tildelt kommandører av St. Olavs Orden i 2000.

Høsten 2000 ble de to utnevnt til kommandører av Sankt Olavs orden for sitt bidrag til utviklingen av datateknologien i Norge.

I februar 2002 ble det kjent at Dahl og Nygaard var blitt tildelt både IBMs Neumann-medalje og Turing-prisen for sitt banebrytende arbeid innen objektorientert programmering. Turing-prisen regnes som informatikkens nobelpris.

Dessuten er den nye og den gamle informatikkbygningen til Universitet i Oslo oppkalt etter henholdsvis Dahl og Nygaard.

Men de to skal ha vært tydelige på at det også var mange andre mennesker involvert i arbeidet med Simula.

Onsdag denne uken markeres altså 50-årsjubileet med et større arrangement i Ole-Johan Dahls hus, hvor det blant annet skal avdukes en IEEE Milestone-plakett, den aller første i Norge og den tredje i Skandinavia. Ifølge Titan skal plaketten ha teksten:

Object-Oriented Programming, 1961-1967

Ole-Johan Dahl and Kristen Nygaard created the Simula programming languages in the 1960s at the Norwegian Computer Center. They introduced a new way of modeling and simulating complex tasks. Object-oriented programming is now dominant in systems development. It is an integral part of computer science curricula, as are languages built on object-oriented programming concepts, such as Smalltalk, C++, Java, and Python.

Les også: Nygaard og Dahl fikk Turing-prisen og Neumann-medaljen

Aprilspøk: Nygaard fikk patent på objektorientering

Rosing: OO-professorene fikk hedersprisen

Et avsnitt om at Java erstattet Simula i nybegynnerkurset i objektorientert programmering ved Ifi, UiO, er tatt ut av saken etter at den ble publisert, siden det viste seg at kilden omtalte overgangen ved Ifi ved UiB, ikke ved UiO.

Powered by Labrador CMS