Simula | ||
Az első változat kelte | 1967 | |
---|---|---|
Paradigmák | Tárgy | |
Szerző | Ole-Johan Dahl , Kristen Nygaard | |
Utolsó verzió |
I. szimula ( 1962. május) 67. sz.1967) |
|
Befolyásolta | Algol 60 | |
Befolyásolt | Objektumorientált nyelvek | |
Simula ( Sim PLE u niversal la nguage ) jött létre 1962 néven Simula I Ole-Johan Dahl és Kristen Nygaard származó Algol 60 . A nyelv 1967-ben alakult ki Simula 67 néven a Hoare első osztályú modelljének (Record Class, Hoare 1965) bevezetésével. Ezért ez az első osztálynyelv, és ezért az összes olyan osztálynyelv apja, mint a Smalltalk , a C ++ , a Java vagy akár az Eiffel . Ihlette Dan Ingallst a Smalltalk tervezésében, amely bevezette az objektum-orientált programozást. Ez az oka annak, hogy a Simula 67-et gyakran tévesen tekintik az első objektumorientált nyelvnek, míg ezt a paradigmát jóval a Simula 67 után, az 1970-es években vezeti be Alan Kay .
Simula alakult ki a 1960-as években a norvég Computing Center in Oslo , kezdetben Ole-Johan Dahl és Kristen Nygaard . Szintaktikusan szólva ez az Algol szuperhalmaza , amely hozzáadja az olyan osztálynyelvek, mint a C ++ vagy a Java , és a diszkrét eseményszimuláció fogalmát, amelyek már ismeretesek .
A Simulát mind a mai napig ipari alkalmazásokhoz használták , De a történelmi hatását fontosabbnak tartják, mint azokkal a alkalmazásokkal, amelyeket vele fejleszteni lehetett volna.
A Simula alatt általában a Simula 67-et , vagyis az 1967-es verziót értjük , míg az előző verzió 1962-től az I- es Simula- tól származik .
Ahogy a neve is sugallja, a Simulát általános célú programozási nyelv mellett úgy tervezték, hogy osztálykönyvtárakat is tartalmazzon, támogatva a diszkrét eseményszimulációra jellemző fogalmakat . A szimulációból örökölt Process osztály lehetővé tette a felhasználó számára, hogy a saját szimulációs osztályai számára örökölje az úgynevezett „ kvázi-párhuzamos ” módban végrehajtható folyamat alapvető viselkedését, a coroutine fogalmát felhasználva .
A coroutine egy olyan rutin, amelynek több kilépési pontja van, és amely a végrehajtási adatfolyam minden egyes újbóli belépésekor a Resume utasítás hívása során folytatja a végrehajtást az utolsó utasításnál, ahol az l 'folyamat korábban leállt egy hívásra a Leválaszt utasítás . A végrehajtási pontot az LSC: Local Sequence Counter tárolja .
A lényeg tisztázása érdekében a következő program készítené az alább látható képet:
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;Kijelző:
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 EndA diszkrét szimulációs könyvtár lehetővé tette a folyamatsor kezelését dedikált utasítások ( Aktiválás , Passziválás , Tartás stb.) Segítségével .
A legtöbb olyan konstrukció, amely később lehetővé teszi az objektum-orientált programozás fő koncepcióinak megvalósítását, már megtalálható a Simula 67-ben :
Ez a rövid lista lehetővé teszi a Simula által 1967-ben a strukturált imperatív nyelvek terén elért áttörés megismerését .
Sajnos a Simula szerzői némi zavart hoztak az objektum-orientált programozás világában. Amikor ez az új paradigma megjelent a Smalltalkkal együtt, Ole Johan Dahl és Kristen Nygaard megváltoztatták a Simulában használt neveket, hogy megfeleljenek a Smalltalkban közvetített fogalmaknak (tárgyosztályok, objektumok, attribútumok, módszerek stb.), És kijelentették, hogy a Simula 67 valójában az első objektumorientált nyelv. A Simula 67-ben alkalmazott megközelítést azonban nem Alan Kay, az objektumorientált programozás szerzője határozta meg.