Simula

Simula
Logo.
Data pierwszej wersji 1967
Paradygmaty Obiekt
Autor Ole-Johan Dahl , Kristen Nygaard
Ostatnia wersja Simula I (Maj 1962)
Simula 67 (1967)
Wpływem Algol 60
Pod wpływem Języki zorientowane obiektowo

Simula ( Sim ple u niversal la nguage ) została stworzona w 1962 r. Pod nazwą Simula I przez Ole-Johana Dahla i Kristen Nygaard z Algol 60 . Język rozwinął się w 1967 roku pod nazwą Simula 67 poprzez wdrożenie pierwszego modelu klasy Hoare (Record Class, Hoare 1965). Jest zatem językiem pierwszej klasy, a zatem ojcem wszystkich języków klasowych, takich jak Smalltalk , C ++ , Java , a nawet Eiffel . Zainspirował Dana Ingallsa do zaprojektowania Smalltalk, który wprowadził programowanie obiektowe. To jest powód, dla którego Simula 67 jest często błędnie uważana za pierwszy język zorientowany obiektowo, podczas gdy ten paradygmat został wprowadzony długo po Simuli 67 w latach 70. XX wieku przez Alana Kaya .

Historyczny

Simula została opracowana w latach 60. XX wieku w Norweskim Centrum Obliczeniowym w Oslo , początkowo przez Ole-Johana Dahla i Kristen Nygaard . Mówiąc syntaktycznie, jest to nadzbiór Algola , który dodaje do niego pojęcia, teraz znane, języków klasowych, takich jak C ++ lub Java , oraz dyskretnej symulacji zdarzeń .

Simula była używana w zastosowaniach przemysłowych do dziś , Ale jej historyczny wpływ jest uważany za ważniejszy niż aplikacje, które można było za jej pomocą opracować.

Przez Simuli ogólnie oznacza Simula 67 , to znaczy, że w wersji 1967, podczas gdy poprzednia wersja datowane od 1962 Simula I .

Symulacja dyskretna

Jak sama nazwa wskazuje, oprócz tego, że jest językiem programowania ogólnego przeznaczenia, Simula został zaprojektowany tak, aby zawierał biblioteki klas zapewniające obsługę koncepcji specyficznych dla symulacji zdarzeń dyskretnych . Klasa Process , dziedzicząc po Simulation, pozwoliła więc użytkownikowi na dziedziczenie dla własnych klas symulacji podstawowego zachowania procesu, który może być wykonywany w tzw. Trybie „  quasi-równoległym  ”, wykorzystując koncepcję coroutine .

Korekta to procedura z kilkoma punktami wyjścia, która przy każdym ponownym wejściu do niej strumienia wykonania podczas wywołania instrukcji Resume , wznawia swoje wykonanie od ostatniej instrukcji, w której przepływ l 'poprzednio opuścił wywołanie instrukcja Odłącz . Punkt wykonania jest przechowywany w LSC: Local Sequence Counter .

Aby wyjaśnić tę kwestię, następujący program wyświetli ekran pokazany poniżej:

Begin Ref(TwinProcess) firstProc, secondProc; Class TwinProcess(Name); Text Name; Begin ! Initial coroutine entry (creation) Ref(TwinProcess) Twin; OutText(Name); OutText(": Creation"); OutImage; ! First coroutine exit Detach; ! Second coroutine entry OutText(Name); OutText(": Second coroutine entry"); OutImage; ! Second coroutine exit: switch to the twin's coroutine Resume(Twin); ! Last coroutine entry OutText(Name); OutText(": Last coroutine entry"); OutImage; Resume(Twin); End; Begin firstProc :- New TwinProcess ("1st Proc"); secondProc :- New TwinProcess ("2nd Proc"); firstProc.Twin :- secondProc; secondProc.Twin :- firstProc; OutText("Starting"); OutImage; Resume(firstProc); OutText("End"); End; End;

Pokaz:

1st Proc: Creation 2nd Proc: Creation Starting 1st Proc: Second coroutine entry 2nd Proc: Second coroutine entry 1st Proc: Last coroutine entry 2nd Proc: Last coroutine entry End

Biblioteka symulacji dyskretnych umożliwiła zarządzanie kolejką procesów za pomocą dedykowanych instrukcji ( Aktywuj , Pasywuj , Wstrzymaj itp.)

Programowanie obiektowe

Większość konstrukcji, które później pozwolą na realizację głównych koncepcji programowania obiektowego, jest już obecna w Simuli 67  :

Ta krótka lista pozwala uświadomić sobie przełom koncepcyjny dokonany przez Simulę w 1967 roku w dziedzinie strukturalnych języków imperatywnych.

Niestety, autorzy Simuli wprowadzili pewne zamieszanie w świat programowania obiektowego. Kiedy ten nowy paradygmat pojawił się w Smalltalk, Ole Johan Dahl i Kristen Nygaard zmienili nazwy używane w Simuli, aby były zgodne z koncepcjami przekazywanymi w Smalltalk (klasy obiektów, obiekty, atrybuty, metody itp.) I zadeklarowali, że Simula 67 jest w rzeczywistości pierwszy język obiektowy. Jednak podejście zastosowane w Simula 67 nie jest tym, które zdefiniował Alan Kay, autor programowania obiektowego.

Zobacz też

Powiązane artykuły

Linki zewnętrzne