www.wikidata.de-de.nina.az
Esterel ist eine synchrone imperative Programmiersprache deren Ursprung auf den Anfang der 80er und die Zusammenarbeit mehrerer Wissenschaftler u a Gerard Berry zuruckzufuhren ist Inhaltsverzeichnis 1 Ursprung 2 Semantik 3 Optimierung 4 Verifikation 5 Kompilierung 6 Simulation 7 Weblinks 8 EinzelnachweiseUrsprung BearbeitenEsterel entstand aus Unzufriedenheit zweier Forscher Jean Paul Marmorat und Jean Paul Rigault bei der Entwicklung eines Robotik Autos Sie erkannten die Notwendigkeit fur spezielle Statements zum Umgang mit Zeit besonders Zeitverzogerungen und Preemption Entzug von Komponenten und fanden dass die Wiederholung eines Signals als eine eigene Zeiteinheit zahlen sollte Nach einigen wichtigen Weiterentwicklungen entstand 1987 1988 Esterel v3 Grossere Programme wurden damit jedoch erschwert da es haufig zu einer Explosion von Zustanden kam Zur vorubergehenden Losung wurden Hilfsprogramme entwickelt um dies zu vermeiden 1992 kam der Esterel v4 Compiler welcher das Problem der Zustandsexplosion grundsatzlich beseitigte Weitere Entwicklungen fuhrten nun zum aktuellen Esterel v5 Compiler Esterel wird seit den 90ern kommerziell vertrieben z Z mit Esterel Studio entwickelt durch die franzosische Firma Esterel Technologies Esterel kann entweder als Hardware Software Kombination oder als reine Hardware Losung implementiert werden Semantik BearbeitenDa eine jederzeit bestimmbare Zeit nicht existiert bzw Esterel auf der Multi form time basiert wird die Zeit durch Ereignisse events bestimmt wobei die niedrigste Zeiteinheit ein tick bzw instant darstellt Reagiert wird nur auf Sensoren oder Signale Dadurch sind beliebige Einheiten verwendbar z B Minuten Meter Grad Die Haufigkeit des Empfangs eines Signals bestimmt den eigentlichen Wert z B 100 Meter Sensoren dienen zum Empfang von Werten Signale konnen gesendet und empfangen werden Signale unterteilen sich in pure ohne Wert und wertbehaftete mit Wert Esterel Programme sind nicht selbst lauffahig und bedurfen einer Host Sprache aus der ein Import von Datentypen moglich ist Esterel weist keine eigenen komplexen Datentypen nur einfache ganzzahlige auf und ist im Gegensatz zu Lustre fur kontroll intensive Systeme besser geeignet als fur Daten intensive Signale sind Variablen meist vorzuziehen weil Abfragen eines Variablenwerts Codezeilen und damit Laufzeit benotigt Signale hingegen nicht Eine weitere spezielle Eigenheit sind Combined Signals Signalwerte welche zum selben Zeitpunkt gesendet werden konnen vom Empfanger addiert werden Dies fuhrt zu Ersparnis von Befehlslaufzeit die sich ansonsten mit jeder weiteren Abfrage zusatzlich erhohen wurde Module innere Operationen engl nested operations und die Ausnahmebehandlung engl exceptions stellen weitere wichtige Komponenten von Esterel dar Module sind beliebig platzierbar Innere Operationen konnen nach Prioritaten geschachtelt werden wobei die ausserste Schachtelung die hochste Prioritat erhalt In Verbindung mit Exceptions erhalt man Prozessablaufe welche jederzeit unterbrochen werden konnen Treten in mehreren geschachtelten Programmabschnitten Exceptions auf wird nur die ausserste Exception ausgefuhrt Essentiell ist ebenso Broadcasting das die Hauptkommunikation zwischen den Prozessen darstellt Weder der Empfanger noch der Sender mussen wissen wer ein Signal sendet bzw empfangt Erst bei der Laufzeit wird dies entschieden und das ohne Effizienzeinbussen Es konnen auch externe Tasks aus der Hostsprache ausgefuhrt werden Das nachfolgende Modul angelehnt an AVERAGE 1 veranschaulicht den Vorteil laufende Prozesse standig unterbrechen zu konnen module COUNTER input INCREMENT COUNTER integer DONT COUNT integer output COUNTER VALUE var COUNTER VALUE 0 integer in abort every immediate INCREMENT COUNTER do COUNTER VALUE COUNTER VALUE 1 emit COUNTER VALUE end when 1 DONT COUNT end module COUNTER VALUE wird zu Beginn mit 0 initialisiert Bei jedem Empfang von INCREMENT COUNTER wird COUNTER VALUE um 1 erhoht und mit emit der neue Counterwert gesendet Empfangt das Modul hingegen zur gleichen Zeit neben INCREMENT COUNTER ebenso ein DONT COUNT Signal wird mit abort eine Exception ausgefuhrt und der innere Codeabschnitt ignoriert Optimierung BearbeitenDer Esterel Compiler ist sehr effizient Der Versuch bestehenden Code per Hand zu minimieren erweist sich als unnotig Der Compiler ubersetzt jedes Programm in einen aquivalenten sequentiellen linearen Automaten womit sich einzig die Kompilierungszeit erhoht Verifikation BearbeitenDurch den deterministischen Automaten wird die Verifikation vereinfacht Ein zur Verifikation verwendetes Tool ware Verification AUTO Kompilierung BearbeitenEsterel Code kann entweder als ganzer Automat oder als mehrere kommunizierende Teilautomaten kompiliert werden Beide Moglichkeiten haben Vorteile Ein ganzer Automat braucht mehr Platz spart jedoch Zeit Mehrere Teilautomaten sparen durch die Form als Module Speicherplatz der Zeitaufwand wird jedoch durch mehr Kommunikationsaufwand erhoht Modifiziert man den Programmcode durch Entfernen eines Moduls wirkt sich dies meist nicht bzw kaum auf andere Module aus Jedoch verkurzt sich die Kompilierungszeit Es kann C Code erzeugt werden welcher in die Host Sprache eingebunden wird Ebenso ist das Ubersetzen ins OC Format moglich Kommerzielle Programme generieren auch VHDL etc Simulation BearbeitenDer Esterel v5 Compiler startet mittels der Option simul eine Simulation Die Eingabe erfolgt hierbei uber das Terminal Existierende grafikbasierte Anwendungen vereinfachen die Eingabe und das Ablesen von Ausgabewerten Ebenso konnen Trace Optionen verwendet werden Generierter C Code eingebunden in der Host Sprache kann ausgefuhrt werden Es muss dennoch beachtet werden dass fur Betriebssysteme unterschiedliche Auflosungen der Zeiteinheiten gelten System V 1s BSD 4 3 1 60s womit zeitkritische Simulationen kaum moglich sind Weblinks BearbeitenEsterel WebEinzelnachweise Bearbeiten G Berry Programming a digital watch in esterel v3 Technischer Report 1032 ENSMP und INRIA 1991 S 18 Abgerufen von https de wikipedia org w index php title Esterel Programmiersprache amp oldid 190702756