Simula

Simula ist ein Name für zwei Simulierungsprogrammiersprachen, Simula I und Simula 67, entwickelt in den 1960er Jahren am norwegischen Rechenzentrum in Oslo, durch Ole-Johan Dahl und Kristen Nygaard. Syntaktisch ist es eine ziemlich treue Obermenge des Algols 60.

Simula 67 eingeführte Gegenstände, Klassen, Unterklassen, virtuelle Methoden, Koroutinen, getrennte Ereignis-Simulation und Eigenschaft-Müll-Sammlung.

Simula wird als die erste objektorientierte Programmiersprache betrachtet. Da sein Name einbezieht, wurde Simula entworfen, um Simulationen zu tun, und die Bedürfnisse nach diesem Gebiet haben das Fachwerk für viele der Eigenschaften von objektorientierten Sprachen heute zur Verfügung gestellt.

Simula ist in einer breiten Reihe von Anwendungen wie das Simulieren von VLSI Designs, das Prozess-Modellieren, die Protokolle, die Algorithmen und die anderen Anwendungen wie Schriftsetzen, Computergrafik und Ausbildung verwendet worden. Der Einfluss von Simula wird häufig heruntergespielt, und Simula-Typ-Gegenstände werden in C ++, Java und C# wiederdurchgeführt. Der Schöpfer von C ++, Bjarne Stroustrup, hat zugegeben, dass Simula 67 der größte Einfluss auf ihn war, um C ++ zu entwickeln, die Art von Produktivitätserhöhungen zu bringen, die von Simula der rohen rechenbetonten Geschwindigkeit angeboten sind, die durch Sprachen der niedrigeren Ebene wie BCPL angeboten ist.

Geschichte

Die folgende Rechnung basiert auf dem historischen Aufsatz von Jan Rune Holmevik.

Kristen Nygaard hat angefangen, Computersimulierungsprogramme 1957 zu schreiben. Nygaard hat ein Bedürfnis nach einer besseren Weise gesehen, die Heterogenität und die Operation eines Systems zu beschreiben. Um weiter mit seinen Ideen auf einer formellen Computersprache zu gehen, für ein System zu beschreiben, hat Nygaard begriffen, dass er jemanden mit mehr Programmiersachkenntnissen gebraucht hat, als er hatte. Ole-Johan Dahl hat sich ihm auf seinem Arbeitsjanuar 1962 angeschlossen. Die Entscheidung, die Sprache bis zum Algol 60 zu verbinden, wurde kurz danach getroffen. Vor dem Mai 1962 wurden die Hauptkonzepte für eine Simulierungssprache gesetzt. "SIMULA I", ist eine spezielle Zweck-Programmiersprache geboren gewesen, um getrennte Ereignis-Systeme vorzutäuschen.

Kristen Nygaard wurde zu UNIVAC später Mai 1962 im Zusammenhang mit dem Marketing ihres neuen UNIVAC 1107-Computers eingeladen. Bei diesem Besuch hat Nygaard die Ideen von Simula Robert Bemer, dem Direktor der Systemprogrammierung an Univac präsentiert. Bemer war ein geschworener Algol-Anhänger und hat das Projektzwingen von Simula gefunden. Bemer führte auch bei einer Sitzung auf der zweiten internationalen Konferenz für die durch IFIP veranstaltete Informationsverarbeitung den Vorsitz. Er hat Nygaard eingeladen, die den Vortrag "SIMULA - Eine Erweiterung des Algols zur Beschreibung von Netzen des Getrennten Ereignisses" gehalten hat.

Norwegisches Rechenzentrum hat einen UNIVAC 1107-August 1963 bei einem beträchtlichen Preisnachlass bekommen, auf dem Dahl den SIMULA I laut des Vertrags mit UNIVAC durchgeführt hat. Die Durchführung hat auf dem UNIVAC Algol 60 Bearbeiter basiert. SIMULA war ich auf UNIVAC 1107 vor dem Januar 1965 völlig betrieblich. Im folgenden Paar von Jahren haben Dahl und Nygaard viel Zeit verbracht, Simula unterrichtend. Simula breiten sich zu mehreren Ländern um die Welt und SIMULA aus ich wurde später auf Burroughs B5500 Computer und der russische URAL 16 Computer durchgeführt.

1966 hat C. A. R. Hoare das Konzept der Rekordklassenkonstruktion eingeführt, die Dahl und Nygaard mit dem Konzept des Vorbefestigens und der anderen Eigenschaften erweitert haben, um ihren Anforderungen für ein verallgemeinertes Prozess-Konzept zu entsprechen. Dahl und Nygaard haben ihren Vortrag auf Klassen- und Unterklasse-Behauptungen am IFIP Arbeitskonferenz für Simulierungssprachen in Oslo, Mai 1967 gehalten. Diese Zeitung ist die erste formelle Definition von Simula 67 geworden. Im Juni 1967, wie man hielt, hat eine Konferenz die Sprache standardisiert und mehrere Durchführungen begonnen. Dahl hat vorgehabt, den Typ und das Klassenkonzept zu vereinigen. Das hat zu ernsten Diskussionen geführt, und der Vorschlag wurde vom Ausschuss zurückgewiesen. SIMULA 67 wurde auf der ersten Sitzung von SIMULA Standards Group (SSG) im Februar 1968 formell standardisiert.

Simula war in der Entwicklung des Plausches und der späteren objektorientierten Programmiersprachen einflussreich. Es hat auch geholfen, das Schauspieler-Modell der gleichzeitigen Berechnung zu begeistern, obwohl Simula nur Koroutinen und nicht wahre Parallelität unterstützt.

Gegen Ende der sechziger Jahre und des Anfangs von siebziger Jahren gab es vier Hauptdurchführungen von Simula:

  • UNIVAC 1100 durch NCC
  • System/360 und System/370 durch das schwedische Forschungsinstitut für die Nationale Verteidigung (FOA)
  • CDC 3000 durch die Universität von Oslos Gemeinsamer Computerinstallation an Kjeller
  • SPITZEN 10 durch ENEA AB

Diese Durchführungen wurden zu einer breiten Reihe von Plattformen getragen. Die SPITZEN 10 haben das Konzept des Publikums, der geschützten und privaten Mitglied-Variablen und der Methoden durchgeführt, das wurde später in Simula 87 integriert. Simula 87 ist der letzte Standard und wird zu einer breiten Reihe von Plattformen getragen. Es gibt hauptsächlich drei Durchführungen:

  • Simula ALS
  • Lund Simula
  • GNU Cim

Im November 2001 wurde Dahl und Nygaard dem IEEE Orden von John von Neumann vom Institut für Elektrische und Elektronische Ingenieure "Für die Einführung der Konzepte verliehen, die objektorientierter Programmierung durch das Design und Durchführung von SIMULA 67 unterliegen". Im Februar 2002 haben sie 20:01 Uhr Turing Preis durch die Vereinigung erhalten, um Maschinerie (ACM) mit dem Zitat Zu schätzen: "Als für das Erscheinen des Gegenstands grundsätzliche Ideen Programmierung, durch ihr Design der Programmiersprachen Simula I und Simula 67 orientiert haben." Leider konnten weder Dahl, noch Nygaard es zum ACM Turing Preis-Vortrag, vorgesehen machen, um auf der OOPSLA 2002-Konferenz in Seattle geliefert zu werden, als sie beide innerhalb von zwei Monaten einander] im Juni und August beziehungsweise gestorben sind.

Simula Forschungslabor ist ein Forschungsinstitut genannt nach der Sprache von Simula, und Nygaard hat eine Teilzeitposition dort von der Öffnung 2001 gehalten.

Simula wird noch für verschiedene Typen von Universitätskursen zum Beispiel verwendet, Jarek Sklenar unterrichtet Simula Studenten an der Universität Maltas.

Beispielcode

Minimales Programm

Die leere Computerdatei ist das minimale Programm in Simula, der durch die Größe des Quellcodes gemessen ist.

Es besteht aus einem Ding nur; eine Scheinbehauptung.

Jedoch wird das minimale Programm als ein leerer Block günstiger vertreten:

Beginnen Sie

Ende;

Es beginnt durchzuführen und endet sofort.

Die Sprache hat keinen Rückwert aus dem Programm selbst.

Klassiker Hallo Welt

Ein Beispiel eines Hallo Weltprogramms in Simula:

Beginnen Sie

OutText ("hallo Welt!");

Outimage;

Ende;

Simula ist gegen den Fall unempfindlich.

Klassen, Unterklassen und virtuelle Methoden

Ein realistischeres Beispiel mit dem Gebrauch von Klassen, Unterklassen und virtuellen Methoden:

Beginnen Sie

Klasse Glyph;

Virtuell: Verfahren-Druck Ist Verfahren-Druck;;

Beginnen Sie

Ende;

Glyph Klassenrotforelle (c);

Charakter c;

Beginnen Sie

Verfahren-Druck;

OutChar (c);

Ende;

Glyph Klassenlinie (Elemente);

Bezüglich (Glyph) Reihe-Elemente;

Beginnen Sie Verfahren-Druck;

Beginnen Sie

Ganze Zahl i;

Weil ich: = 1 Schritt 1 Bis Tun UpperBound (Elemente, 1)

Elemente (i).print;

OutImage;

Ende;

Ende;

Bezüglich (Glyph) rg;

Bezüglich (Glyph) Reihe rgs (1: 4);

! Hauptprogramm;

rgs (1):-Neue Rotforelle;

rgs (2):-Neue Rotforelle ('b');

rgs (3):-Neue Rotforelle ('b');

rgs (4):-Neue Rotforelle;

rg:-Neue Linie (rgs);

rg.print;

Ende;

Das obengenannte Beispiel hat eine Superklasse (Glyph) mit zwei Unterklassen (Rotforelle und Linie).

Es gibt eine virtuelle Methode mit zwei Durchführungen.

Die Ausführung fängt durch die Durchführung des Hauptprogramms an.

Simula hat das Konzept von abstrakten Klassen nicht, da Klassen mit reinen virtuellen Methoden realisiert werden können. Das bedeutet, dass im obengenannten Beispiel alle Klassen realisiert werden können. Das Benennen einer reinen virtuellen Methode wird jedoch einen Laufzeitfehler erzeugen.

Rufen Sie namentlich

Unterstützungsanruf von Simula namentlich so das Gerät von Jensen kann leicht durchgeführt werden.

Jedoch ist die Verzug-Übertragungsart für den einfachen Parameter Anruf durch den Wert gegen das Algol, das Anruf namentlich verwendet hat.

Der Quellcode für das Gerät von Jensen muss deshalb Anruf namentlich die Rahmen, wenn kompiliert, durch einen Bearbeiter von Simula angeben.

Ein anderes viel einfacheres Beispiel ist die Summierungsfunktion, die wie folgt durchgeführt werden kann:

Echtes Verfahren-Sigma (k, M, n, u);

Name k, u;

Ganze Zahl k, M, n; echter u;

Beginnen Sie

Echter s;

k: = M;

Während k

kann dann wie folgt durchgeführt werden:

Z: = Sigma (ich, 1, 100, 1 / (ich + a) ** 2);

Simulation

Simula schließt ein Simulierungspaket ein, um getrennte Ereignis-Simulationen zu tun. Dieses Simulierungspaket basiert auf orientierten Eigenschaften des Gegenstands von Simula und seinem Koroutine-Konzept.

Sam, Sally, und Andy kaufen für die Kleidung ein. Sie müssen eine Anprobe teilen. Jeder von ihnen durchsucht den Laden seit ungefähr 12 Minuten und verwendet dann die Anprobe exklusiv seit ungefähr drei Minuten, jedem im Anschluss an eine Normalverteilung. Eine Simulation ihrer Anprobe-Erfahrung ist wie folgt:

Simulation beginnt

Klasse FittingRoom; beginnen Sie

Bezüglich der (Haupt)-Tür;

Boolean inUse;

Verfahren-Bitte; Beginnen Sie

Wenn inUse Dann Beginnen

Warten Sie (Tür);

Tür. Zuerst.;

Ende;

inUse: = Wahr;

Ende;

Verfahren-Erlaubnis; Beginnen Sie

inUse: = Falsch;

Aktivieren Sie Tür. Zuerst;

Ende;

door:-Neuer Kopf;

Ende;

Verfahren-Bericht (Nachricht); SMS-Nachricht; Beginnen Sie

OutFix (Zeit, 2, 0); OutText (": "& Nachricht); OutImage;

Ende;

Prozess-Klassenperson (pname); Text pname; Beginnen Sie

Beginnen Sie während wahr

,

Halten Sie (Normal (12, 4, u));

Bericht (pname & "bittet um die Anprobe");

fittingroom1.request;

Bericht (pname & "ist in die Anprobe" eingegangen);

Halten Sie (Normal (3, 1, u));

fittingroom1.leave;

Bericht (pname & "hat die Anprobe" verlassen);

Ende; Ende;

Ganze Zahl u;

Bezüglich (der Anprobe) fittingRoom1;

fittingroom1:-Neuer FittingRoom;

Aktivieren Sie neue Person ("Sam");

Aktivieren Sie neue Person ("Sally");

Aktivieren Sie neue Person ("Andy");

Halten Sie (100);

Ende;

Der Hauptblock wird vorbefestigt mit, um Simulation zu ermöglichen. Das Simulierungspaket kann auf jedem Block verwendet werden, und Simulationen können sogar verschachtelt werden, wenn man jemanden vortäuscht, Simulationen tuend.

Der Anprobe-Gegenstand verwendet eine Warteschlange , um Zugang zur Anprobe zu bekommen. Wenn jemand um die Anprobe bittet und es im Gebrauch ist, auf den sie in dieser Warteschlange warten müssen. Wenn jemand die Anprobe verlässt, wird der erste (wenn irgendwelcher) von der Warteschlange veröffentlicht und entsprechend von der Tür-Warteschlange entfernt.

Person ist eine Unterklasse des Prozesses, und seine Tätigkeit wird damit beschrieben halten (Zeit, für den Laden und Zeit zu durchsuchen, die in der Anprobe verbracht ist) und Anruf-Methoden im Anprobe-Gegenstand, um um die Anprobe zu bitten und sie zu verlassen.

Das Hauptprogramm schafft alle Gegenstände und aktiviert alle Person-Gegenstände, sie in die Ereignis-Warteschlange zu stellen. Das Hauptprogramm hält seit 100 Minuten der vorgetäuschten Zeit, bevor das Programm endet.

Siehe auch

  • BETA, ein moderner Nachfolger von Simula
Wenn er
  • subtippt, entsteht der moderne theoretische Begriff des Subschreibens in Simula

Quelle

Außenverbindungen

  • - gestützt auf dem 1997-Seminar "30 Jahre von Object Oriented Programming (OOP)"
  • - schließt Tutorenkurse, Dokumentation ein, und verbindet sich in Englisch und in französischem
  • - Demos waren ursprünglich ein SIMULA Paket für die getrennte Ereignis-Simulation, die von Graham Birtwistle geschrieben ist
  • - mit einigen Zeichen auf Demos durch Graham Birtwistle

Siouxsie und die Todesfeen / SNOBOL
Impressum & Datenschutz