Ereignisorientiertes Programmieren E.3 E.3 E.3 Ereignisorientiertes Ereignisorientiertes Programmieren Programmieren © 2001 Prof. Dr. Rainer Manthey Informatik I 1 Ereignisorientierte Programmierung - ein neues Paradigma der Informatik? E.3 • in verschiedensten Gebieten der Informatik zu beobachten: Entstehung neuer Programmiertechniken zur komfortableren Programmierung reaktiver Systeme • zentrales Konzept all dieser Ansätze: Ereignis (engl.: "event") • Beispiele für Ereignisse: • Aufruf oder Abschluss bestimmter Prozeduren/Methoden • Eintreten bestimmter Konstellationen im Speicher • Eintreffen externer Signale oder Eingaben • Eintreten bestimmter Zeitpunkte • Auftreten von Ausnahme- oder Fehlersituationen • © gemeinsames Programmierkonzept zur "Behandlung" solcher Ereignisse: Reaktionsregel, die festlegt, welche Aktion ausgelöst werden soll (engl.: "to trigger") ON event> DO reaction> ON <<event> DO <<reaction> 2001 Prof. Dr. Rainer Manthey Informatik I 2 Reaktive Systeme (1) E.3 Ereignisorientierte EreignisorientierteProgrammierung Programmierung == Programmierung Programmierungreaktiver reaktiverSysteme Systeme Sensoren Sensoren stimulierende Ereignisse ausgelöste (Re-)Aktionen Effektoren Effektoren © 2001 Prof. Dr. Rainer Manthey Informatik I 3 Mobile, autonome Roboter: Beispiele reaktiver Systeme E.3 Sensoren Sensoren Beispiel eines "reaktiven Systems": Effektor Effektor RHINO, der mobile Roboter der Informatik III © 2001 Prof. Dr. Rainer Manthey Informatik I 4 Aktive Datenbanksysteme: ebenfalls reaktive Systeme E.3 Auch Auchaktive aktiveDB-Systeme DB-Systemesind sindspezielle spezielleFormen Formenreaktiver reaktiverSysteme. Systeme. DBMS DB Regelbasis (ON . . DO) © 2001 Prof. Dr. Rainer Manthey Informatik I 5 Reaktive Systeme (2) E.3 stimulierte stimulierteZustände Zustände reagierende reagierendeZustände Zustände interne interneZustände Zustände interne interneZustandsübergänge Zustandsübergänge © 2001 Prof. Dr. Rainer Manthey Informatik I 6 Reaktive Systeme (3) E.3 "reaktives "reaktivesProgramm": Programm": Festlegung der Reaktionen des Systems auf bestimmte Ereignisse © 2001 Prof. Dr. Rainer Manthey Informatik I ... 7 Reaktive Systeme (4) E.3 introvertierte introvertierte Reaktionen Reaktionen exogene exogeneEreignisse Ereignisse extrovertierte extrovertierte Reaktionen Reaktionen endogene endogeneEreignisse Ereignisse "von {außen|innen} erzeugt" © 2001 Prof. Dr. Rainer Manthey "nach {außen|innen} gerichtet" Informatik I 8 Aktive DB-Regeln: Beispiel E.3 Exogene, introvertierte Reaktion auf DB-Änderungen in aktiven Datenbanken: von vonaussen aussenangestossen angestossen define defineimmediate immediatetrigger triggerAdjustSalary AdjustSalaryfor foremployee employee events events create, create,modify(salary) modify(salary) condition condition Self.salary Self.salary>>Self.mgr.salary Self.mgr.salary actions actions modify(employee.salary, modify(employee.salary,Self, Self,Self.mgr.salary) Self.mgr.salary) after department.raiseBudget after department.raiseBudget end; end; Chimera (objektorientiert) interne interneReaktion Reaktion(Folgeänderung) (Folgeänderung) CREATE CREATE TRIGGER TRIGGER reinsertDel reinsertDel BEFORE BEFORE DELETE DELETE ON ON copy copy REFERENCING REFERENCING OLD OLD ROW ROW AS AS deleted deleted FOR FOR EACH EACH ROW ROW WHEN WHEN deleted.copycol deleted.copycol BETWEEN BETWEEN 10 10 AND AND 20 20 INSERT INSERT INTO INTO main main VALUES VALUES deleted deleted © 2001 Prof. Dr. Rainer Manthey Informatik I SQL 3 (relational) 9 Reaktive Systeme (5) E.3 Reaktionen , Reaktionenkönnen könnenselbst selbstwieder wiederEreignisse Ereignissedarstellen darstellen, auf aufdie diedas dasSystem Systemreagieren reagierenkann kann Mehrstufigkeit Mehrstufigkeit Rückkopplung/feedback Rückkopplung/feedback © 2001 Prof. Dr. Rainer Manthey Informatik I 10 Reaktive Systeme (6) E.3 Systemtakt synchrone synchroneEreignisse Ereignisse asynchrone asynchrone Ereignisse Ereignisse © 2001 Prof. Dr. Rainer Manthey Informatik I 11 Imperativ versus reaktiv E.3 begin A1 imperatives Programm: A2 begin begin AA1 ;; 1 AA2 ;; 2 AA3 ;; 3 ifif CC then then AA4a4a else else AA4b4b;; AA5 5 end end A3 C A4b A4a A5 end © 2001 Prof. Dr. Rainer Manthey Informatik I 12 Imperativ versus reaktiv (2) E.3 reaktives Programm: E1 A1 on on EE11 do do AA11. . E2 on on (E (E11or orEE22)) do do AA22. . on on EE33 do do (A (A33;;AA44).). E3 on on EE44 do do if CCthen ((if thenAA44else elseAA55).). E4 wesentlicher Unterschied: • andere Aktivierungsart • anderes Ablaufschema als bei imperativen Programmen © 2001 Prof. Dr. Rainer Manthey A2 A3 A4 C A4 Informatik I 13 Reaktives System: generelle Systemfunktionalität E.3 Ereignisorientierte Sprachen müssen durch eine "intelligente" Kontrolle zur Laufzeit realisiert werden: Kontrollmodul wartet auf relevante Ereignisse und reagiert dann gemäss seinem reaktiven Programm. "Oberflächenprozeß" (z.B. Programmablauf, DB-Transaktion, Aussenwelt) ... (suspendiert) ... beobachten ? reagieren "Hintergrundaktivität" (ggf. auch nebenläufig) prüfen © 2001 Prof. Dr. Rainer Manthey Informatik I 14 Othello-Spiel E.3 1. Zug von Schwarz (exogen) sehr simples Beispiel eines reaktiven Programms: Spielprogramm für Othello Systemreaktion Systemreaktion (extrovertiert) (extrovertiert) Gegenzug von Weiß (exogen) © 2001 Prof. Dr. Rainer Manthey Informatik I 15 Ereignisorientierung in der Programmierung: Stand heute E.3 • Ereignisorientierte Programmierkonstrukte findet man bereits heute in vielen Sprachen und Anwendungsgebieten. • Am weitesten verbreitet (und am bekanntesten): • Graphikprogrammierung (ON mouse_click DO . . .) • Webseitengestaltung (HTML-Ereignisse) • ältestes Anwendungsgebiet (?): Künstliche Intelligenz • Expertensysteme (Produktionsregeln, OPS5) • Robotik, Agentensysteme • Programmiersprachlich am weitesten entwickelt: Sprachen zur Spezifikation von Signalverarbeitungs- und Telekommunikationssystemen (meist für verteilte, parallele Systeme): Esterel, SDL, LOTOS u.a. • Weitgehende Untersuchungen von Syntax- und Semantikformen: aktive Datenbanken 2.2.Semester: Semester: Ereignisse Ereignissein inJava Java © 2001 Prof. Dr. Rainer Manthey Informatik I 16