| Simula | |
| Paradigm | objektorienterad |
|---|---|
| Gavs ut | 1962 |
| Skapat av | Ole-Johan Dahl ochKristen Nygaard |
| Influerat av | Algol 60,Simscript |
| Influerat | C++,Object Pascal,Java,C# och många fler objektorienterade språk |
Simula brukar benämnas som det förstaobjektorienteradeprogramspråket. Det är en utvidgning avAlgol 60 avsett försimulering. Språket togs ursprungligen fram i Norge avOle-Johan Dahl ochKristen Nygaard 1962–1967. Kompilatorer fanns bland annat förTops-10 ochTOPS-20. Språket har bland annat varit populärt som undervisningsspråk ochBjarne Stroustrup har varit inspirerad av Simula när han utveckladeC++ som etablerade objektorienterad programmering. Andra indirekta arvtagare till Simula ärJava. De flesta moderna programmeringsspråk som t.ex. Xojo och Microsoft Visual Basic har starka spår bakåt till Simula.
I klassenSimulation var det enkelt att beskriva verkliga objekt och dess beteende, som till exempel en person som kommer in och ska göra bankärenden, eller bilar som närmar sig en korsning. Personen tittar kanske efter vilken kö som är kortast, eller vilken kö som har minst av en viss kategori människor, och ställer sig sedan i en viss kö. Kanske finns en viss sannolikhet att personen efter 15 min inte kan vänta längre, kanske inte ställer sig i kön alls om den är lång, och så vidare. Köer och slumpberäknade väntetider, eller betjäningstider är ofta förekommande inslag. Sättet att hantera sådana objekt kallas "korutiner", de kan leva sitt eget liv, till exempel begära att få vänta en viss tid, med ett särskilt funktionsanrop, och efter denna tid återvända till programraden efter. Under mellantiden körs andra objekt. Detta liknar parallell programmering, eller "aktiva objekt" som det ibland kallas idag. Att beskriva liknande system med ett traditionellt språk som Algol eller Fortran blir oerhört komplext.
Simulas viktigaste arv till eftervärlden är naturligtvis inte simuleringsprincipen, utan att språket visade värdet av att kunna strukturera objektorienterat.
Det klassiska "Hello World!" ser ut på följande sätt:
Begin OutText("Hello World!"); OutImage; End;