Synchrone Programmiersprache - Synchronous programming language

Eine synchrone Programmiersprache ist eine Computerprogrammiersprache, die für die Programmierung reaktiver Systeme optimiert ist . Computersysteme können in drei Hauptklassen unterteilt werden: (1) Transformationssysteme , die einige Eingaben annehmen, verarbeiten, ihre Ausgaben liefern und ihre Ausführung beenden; Ein typisches Beispiel ist ein Compiler. (2) interaktive Systeme , die kontinuierlich mit ihrer Umgebung in ihrer eigenen Geschwindigkeit interagieren; Ein typisches Beispiel ist das Web. und (3) reaktive Systeme , die kontinuierlich mit ihrer Umgebung interagieren, mit einer Geschwindigkeit, die von der Umgebung vorgegeben wird; Ein typisches Beispiel ist das automatische Flugsteuerungssystem moderner Flugzeuge. Reaktive Systeme müssen daher innerhalb strenger Zeitgrenzen auf Reize aus der Umwelt reagieren. Aus diesem Grund werden sie häufig auch als Echtzeitsysteme bezeichnet und sind häufig in eingebetteten Systemen zu finden .

Synchrone Programmierung (auch synchrone reaktive Programmierung oder SRP ) ist ein Computer - Programmierparadigma durch synchrone Programmiersprachen unterstützt. Das Prinzip von SRP besteht darin, für Programmiersprachen dieselbe Abstraktion wie für die synchrone Abstraktion in digitalen Schaltkreisen vorzunehmen. Synchronschaltungen sind in der Tat auf einem hohen Abstraktionsniveau ausgelegt, bei dem die Timing-Eigenschaften der elektronischen Transistoren vernachlässigt werden. Es wird daher angenommen, dass jedes Gate der Schaltung (oder, und, ...) sein Ergebnis sofort berechnet, und dass jeder Draht sein Signal sofort überträgt. Eine Synchronschaltung wird getaktet und berechnet bei jedem Tick ihres Takts sofort ihre Ausgangswerte und die neuen Werte ihrer Speicherzellen (Latches) aus ihren Eingangswerten und den aktuellen Werten ihrer Speicherzellen. Mit anderen Worten, die Schaltung verhält sich so, als würden die Elektronen unendlich schnell fließen. Die ersten synchronen Programmiersprachen wurden in den 1980er Jahren in Frankreich erfunden: Esterel , Lustre und Signal . Seitdem sind viele andere synchrone Sprachen entstanden.

Die synchrone Abstraktion erleichtert das Denken über die Zeit in einem synchronen Programm dank des Begriffs der logischen Ticks erheblich : Ein synchrones Programm reagiert in einer Folge von Ticks auf seine Umgebung, und Berechnungen innerhalb eines Ticks werden als augenblicklich angenommen, d. H. wenn der Prozessor, der sie ausführt, unendlich schnell wäre. Die Anweisung " a || b " wird daher als das Paket " ab " abstrahiert, wobei " a " und " b " gleichzeitig sind. Um ein konkretes Beispiel zu nennen, gibt die Esterel-Anweisung " alle 60 Sekunden Emissionsminute " an, dass das Signal " Minute " genau synchron mit dem 60. Auftreten des Signals " Sekunde " ist. Auf einer grundlegenderen Ebene beseitigt die synchrone Abstraktion den Nichtdeterminismus, der sich aus der Verschachtelung gleichzeitiger Verhaltensweisen ergibt. Dies ermöglicht eine deterministische Semantik, wodurch synchrone Programme für formale Analyse, Verifizierung und zertifizierte Codegenerierung zugänglich und als formale Spezifikationsformalismen verwendet werden können .

Im Gegensatz dazu kann im asynchronen Berechnungsmodell auf einem sequentiellen Prozessor die Anweisung " a || b " entweder als " a; b " oder als " b; a " implementiert werden . Dies ist als Interleaving-basierter Nichtdeterminismus bekannt . Der Nachteil eines asynchronen Modells besteht darin, dass es die deterministische Semantik (z. B. Rassenbedingungen) grundsätzlich verbietet, was formale Überlegungen wie Analyse und Verifizierung komplexer macht. Dennoch sind asynchrone Formalismen sehr nützlich, um verteilte Systeme zu modellieren, zu entwerfen und zu verifizieren, da sie an sich asynchron sind.

Im Gegensatz dazu stehen auch Systeme mit Prozessen, die grundsätzlich synchron interagieren . Ein Beispiel wären Systeme, die auf dem CSP- Modell (Communicating Sequential Processes) basieren und auch eine nicht deterministische Auswahl ermöglichen.

Synchrone Sprachen

Siehe auch

Verweise

Externe Links