11.07.2015 Aufrufe

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

110 KAPITEL 6: VERBESSERUNGSMÖGLICHKEITEN{var : (v 1234 : {v 1234 : (v 123 : T 1 p 1 T 2 p 3 T 3 p 4 , x 4 : T 4 )|p 6 (x 3 , x 4 )}, x 5 : T 5 ) |p 5 (x 1 , x 2 , x 3 ) ∧ p 7 (x 1 , x 3 , x 5 ) }– p 5 (x 1 , x 2 , x 3 ) : Hier tritt der Fall ein, wo alle Argumente des Prädikats bereits in einemElementtyp zusammengefasst sind, <strong>und</strong> zwar im Elementtyp, dessen Variable var 123 heißt.Deshalb wird p 5 zum Restriktionsterm von var 123 mit einem logischen AND hinzugefügt:{var : (v 1234 : {v 1234 : (v 123 : {v 123 : (v 12 : T 1 p 1 T 2 p 3 , x 3 : T 3 )|p 4 (x 2 , x 3 ) ∧ p 5 (x 1 , x 2 , x 3 )},x 4 : T 4 )|p 6 (x 3 , x 4 )}, x 5 : T 5 ) | p 7 (x 1 , x 3 , x 5 ) }– p 7 (x 1 , x 3 , x 5 ) : Für diesen Term kann keine Optimierung mehr vorgenommen werden, dadie Gruppierung von x 1 , x 3 <strong>und</strong> x 5 zu einem Elementtyp die Zusammenfassung der verbliebenenTypelemente var 1234 <strong>und</strong> x 5 nach sich ziehen würde – das Ergebnis wäre der Typ(var 1234 : T 1 p 1 T 2 p 3 T 3 p 4 p 5 T 4 p 6 , x 5 : T 5 ), der schon jetzt der Basistyp des äußeren eingeschränktenTyps ist.Nachdem wir den Ablauf der Optimierung dargestellt haben, wollen wir die optimierte Formulierungdes als Beispiel verwendeten eingeschränkten Typs angeben:{var : (v 1234 : {v 1234 : (v 123 : {v 123 : (v 12 : {v 12 : (x 1 : {x 1 : T 1 |p 1 (x 1 )}, x 2 : T 2 )|p 3 (x 1 , x 2 )}, x 3 : T 3 )|p 4 (x 2 , x 3 ) ∧ p 5 (x 1 , x 2 , x 3 )}, x 4 : T 4 )|p 6 (x 3 , x 4 )}, x 5 : T 5 ) | p 7 (x 1 , x 3 , x 5 )}Diese Formulierung bringt unter Umständen erhebliche Zeitgewinne bei der Auswertung gegenüberder äquivalenten nicht-optimierten Formulierung{var : (x 1 : T 1 , x 2 : T 2 , x 3 : T 3 , x 4 : T 4 , x 5 : T 5 ) | p 1 (x 1 ) ∧ p 2 (x 4 ) ∧ p 3 (x 1 , x 2 ) ∧ p 4 (x 2 , x 3 )∧p 5 (x 1 , x 2 , x 3 ) ∧ p 6 (x 3 , x 4 ) ∧ p 7 (x 1 , x 3 , x 5 )}ist jedoch gleichzeitig viel unübersichtlicher. Genau das ist auch der Gr<strong>und</strong> dafür, dass die Integrationdieser Optimierung in das <strong>ODL</strong>-Auswertungssystem von großem Vorteil wäre, denn es ist einemBenutzer kaum zuzumuten, <strong>ODL</strong>-Abfragen selbst so weitgehend zu optimieren, dass sie wie die obigeoptimierte Typdeklaration aussehen.Bei der Implementierung ist folgender Aspekt zu beachten: die <strong>ODL</strong>-Notation schreibt, im Unterschiedzu der im Algorithmus verwendeten vereinfachten Notation, die Verwendung von Selektorenzum Zugriff auf Elemente des Basistyps eines eingeschränkten Typs vor: die korrekte Schreibweisefür den Zugriff auf die Basistyp-Elemente in unserem Beispieltyp wäre also{ var:(x1:T1,x2:T2,x3:T3,x4:T4,x5:T5) |p1(var.x1) and p2(var.x4) and p3(var.x1,var.x2) andp4(var.x2,var.x3) and p5(var.x1,var.x2,var.x3) andp6(var.x3,var.x4) and p7(var.x1,var.x3,var.x5) }In der optimierten Formulierung müsste beispielsweise das Prädikat p 7 im Restriktionsterm sogarkompliziertere Selektorausdrücke verwenden:p7(var.v1234.v123.v12.x1, var.v1234.v123.x3, var.x5)Wie sich damit zeigt, entsteht bei der Umformulierung eines eingeschränkten Typs das Problem, dassdie Namen der Basistyp-Elemente verändert werden, sodass für den Zugriff sowohl im Restriktionstermals auch in Termen außerhalb des eingeschränkten Typs (das sind Terme, welche die Variablebenutzen, deren Typ optimiert wurde) angepasste Selektoren benutzt werden müssten. Ferner fieleauch die Darstellung der erfüllenden Belegungen für die Variable, deren Typ optimiert wurde, andersaus, als der Benutzer sie gemäß der ursprünglichen Typdeklaration erwarten würde.Eine Möglichkeit, diesen Problemen aus dem Weg zu gehen, besteht darin, dass die Umformulierungeines eingeschränkten Type innerhalb der <strong>ODL</strong>-Auswertungsklasse MetaRestricted-Type gekapselt wird, die den eingeschränkten Typ darstellt (s. auch Abschnitt 5.1.2). Der optimierteeingeschränkte Typ verhielte sich nach außen wie seine nicht-optimierte Version – insbesonderekönnte auf die Basistyp-Elemente mit denselben Selektoren wie bei der Ausgangsformulierungdes Typs zugegriffen werden – für die Iteration über die Typinstanzen würde aber intern die optimierteFormulierung verwendet. Weiter könnte die gekapselte optimierte Formulierung zur Überprü-

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!